Node.js 从MongoDB而不是所有模型获取所有文档

Node.js 从MongoDB而不是所有模型获取所有文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我使用Mongoose从我的节点应用程序调用MongoDB,如下所示: var query = itemModel.find(); query.exec(function (err, items) { console.log(err); socket.emit("items", items); }); var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; var playerModel = require('./mo

我使用Mongoose从我的节点应用程序调用MongoDB,如下所示:

var query = itemModel.find();
query.exec(function (err, items) {
  console.log(err);
  socket.emit("items", items); 
});
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;
我有3个这样定义的模型:

var query = itemModel.find();
query.exec(function (err, items) {
  console.log(err);
  socket.emit("items", items); 
});
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;
我的模型是这样的:

var query = itemModel.find();
query.exec(function (err, items) {
  console.log(err);
  socket.emit("items", items); 
});
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(),我只需要项目,我做错了什么?

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


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

您的“我的模型看起来像”代码看起来不正确。您正在创建
itemSchema
,然后在
mongoose.model
调用中引用
characterSchema
。那只是打字错误吗?啊。复制/粘贴的末日。几个小时来一直在敲我的头。感谢mongoVUC和+1,这将很有帮助