我有一个名为'roomlist'的mongoDB集合。使用命令行,我可以运行db.roomlist.find()
,它会返回正确的数据。例如:MongoDB find()返回空使用猫鼬 - node.js
> db.roomlist.find()
{ "_id" : ObjectId("56a5d3b07bf609f092e7f9ab"), "name" : "Lobby", "type" : "public", "lock" : 0, "owner" : "Mike", "invites" : "all", "__v" : 0 }
但是,在我的node.js应用程序中,它只是返回空的。如果我控制台日志输出,我得到:
[]
下面是我使用的是什么:
我的架构如下:
RoomSchema = new Schema({
name: String,
type: String,
lock: String,
owner: String,
invites: String, created: {
type: Date,
default: Date.now
}
});
然后我定义Roomlist如下:
var Roomlist = db.model('Roomlist', RoomSchema);
我试图检索集合中所有“房间”的列表,并将其作为对象发送给我的某个视图。这是我得到的:
Roomlist.find({},{}, function(err, docs) {
if(err) throw err;
res.render('index.ejs',{
"roomlist": docs,
csrfToken: req.csrfToken()
});
console.log(docs);
});
我有console.log在那里进行测试,因为我似乎无法得到它的工作。我在同一个文件中使用了相同的方法设置了其他架构,并且它们似乎工作得很好。有谁能告诉我我在这里做错了什么吗?
重试与普通'find'用'Roomlist建议。 find(function(err,docs){...' –
db.model(“Roomlist”)不会创建一个看起来像这样的集合:'roomlists' ..它使它成为复数,但是你有'db。 roomlist.find()'。(单数)检查你的收藏 –
@jackblank - 我没有意识到这个复数问题,我修改了收集并测试了它,现在它可以工作!非常感谢!我知道它必须是像这样简单的:)如果你将它创建为答案,我将接受 –