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 在那里进行测试,因为我似乎无法让它工作。我在同一个文件中设置了使用相同方法的其他模式,它们似乎工作得很好。谁能告诉我我在这里做错了什么?
【问题讨论】:
用普通的find
和Roomlist.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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章