MongoDB find() 使用 mongoose 返回空 - node.js [重复]

Posted

技术标签:

【中文标题】MongoDB find() 使用 mongoose 返回空 - node.js [重复]【英文标题】:MongoDB find() returning empty using mongoose - node.js [duplicate] 【发布时间】: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 在那里进行测试,因为我似乎无法让它工作。我在同一个文件中设置了使用相同方法的其他模式,它们似乎工作得很好。谁能告诉我我在这里做错了什么?

【问题讨论】:

用普通的findRoomlist.find(function(err, docs) ...重试 不会 db.model("Roomlist") 制作一个看起来像这样的集合:'roomlists` .. 它使它成为复数。但你有db.roomlist.find()。(单数)检查你的收藏。 @jackblank - 我不知道复数问题。我修改了集合并进行了测试,现在可以使用了!太感谢了!我知道它必须是这样简单的东西:) 如果您将其创建为答案,我会接受 【参考方案1】:

db.model("Roomlist") 不会创建一个看起来像这样的集合:'roomlists` .. 它会变成复数形式。但是你有 db.roomlist.find().(singular) 检查你的收藏。

这是一个link,它讨论了在集合名称末尾添加“s”以及如何制作不带“s”的集合的建议

【讨论】:

再次感谢您。我所要做的就是在我的收藏名称中添加一个“s”,效果很好。我真的很感激这个小费!

以上是关于MongoDB find() 使用 mongoose 返回空 - node.js [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 mongoose 访问现有的 mongodb 集合

使用 mongoose 访问现有的 mongodb 集合

PostgreSQL 相当于 MongoDB 的 Mongoose?

mongoose基本增删改查

在codeigniter mongodb中插入函数的位置

mongoDB学习记录---PHP扩展的find返回值