0

我正在使用 Mongoose 从我的 Node 应用程序中调用 MongoDB,如下所示:

var query = itemModel.find();
query.exec(function (err, items) {
  console.log(err);
  socket.emit("items", items); 
});

我有 3 个这样定义的模型:

var Schema = mongoose.Schema
  , ObjectId = Schema.ObjectId;
var playerModel = require('./models/player.js').make(Schema, mongoose);
var characterModel = require('./models/character.js').make(Schema, mongoose, ObjectId);
var itemModel = require('./models/item.js').make(Schema, mongoose);

我的模型如下所示:

function make(Schema, mongoose) {
    itemSchema = new Schema({
        name: String
      , bonus: [{ 
            type: String
          , value: Number 
        }]
      , price: Number
      , slot: String
    });
    return mongoose.model('Character', characterSchema);
}
exports.make = make;

出于某种原因,我得到了所有文件,无论它们是物品、角色还是玩家。因为我在 itemModel 上调用 find(),所以我只期待 Items,我做错了什么?

4

1 回答 1

1

您显示的模型似乎是项目模型,但您正在使用“角色”名称创建模型。这意味着您告诉 Mongoose 项目的方案,并且它存储在“角色”集合中。假设您对每个其他模型(角色/玩家)都做了同样的事情,那么您就是 Mongoose,所有东西都在同一个集合中。

然后您查询该集合,您似乎对所有内容都存储在同一个集合中感到惊讶。我觉得你好像对 Mongoose/MongoDB 没有什么经验,所以我建议你下载并学习爱上 MongoVUE。这个应用程序是一个很好的 GUI,可以用来查看 MongoDB 数据库底层发生的事情。在开发过程中,您可能还希望启用调试功能,以便查看 mongoose 向服务器发起的查询 (mongoose.set('debug', true))。

于 2013-02-18T00:11:23.677 回答