Node.js 从MongoDB而不是所有模型获取所有文档
我使用Mongoose从我的节点应用程序调用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
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,这将很有帮助