【发布时间】:2016-05-01 11:26:49
【问题描述】:
我在 mongoDB 中有一个名为“roomlist”的集合。使用命令行,我可以运行db.roomlist.find(),它会返回正确的数据。示例:
> 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 - 我不知道复数问题。我修改了集合并进行了测试,现在可以使用了!太感谢了!我知道它必须是这样简单的东西:) 如果您将其创建为答案,我会接受
标签: javascript node.js mongodb mongoose