2016-01-25 91 views
0

我有一个名为'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在那里进行测试,因为我似乎无法得到它的工作。我在同一个文件中使用了相同的方法设置了其他架构,并且它们似乎工作得很好。有谁能告诉我我在这里做错了什么吗?

+0

重试与普通'find'用'Roomlist建议。 find(function(err,docs){...' –

+1

db.model(“Roomlist”)不会创建一个看起来像这样的集合:'roomlists' ..它使它成为复数,但是你有'db。 roomlist.find()'。(单数)检查你的收藏 –

+0

@jackblank - 我没有意识到这个复数问题,我修改了收集并测试了它,现在它可以工作!非常感谢!我知道它必须是像这样简单的:)如果你将它创建为答案,我将接受 –

回答

1

不会db.model("Roomlist")使看起来像这样的集合:'roomlists` ..它使它成为复数。但是你有db.roomlist.find()。(单数)检查你的集合。

这里有一个link,讨论在集合名称的结尾处添加“S”的和如何使集合不带“s”

+0

再次感谢。我所要做的只是在我的收藏名称中加上's',它效果很好。我真的很感激小费! –