我安装了MongoDB,其数据库名为Collector
,其中包含名为Msg
的集合。
当我使用mongo
shell查看它时,我得到65个结果。
但是,当使用下面的Mongoose代码查询MongoDB时,我得到一个空集:
var Msg = mongoose.model('Msg', {
process: String
// omitted fields
});
server.use(express.static('./client')); // Serve the client
server.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept");
next();
});
// Return to the client a JSON object containing *ALL* msgs
server.get('/msgs', function(req, res) {
Msg.find().exec(function(err, msgs) {
log(`err: ${err}`);
log(`/msgs => Found ${msgs.length} msgs`);
res.json(msgs);
});
});
一切似乎都没问题,但它不起作用:访问localhost:3000/msgs
会产生一个空的结果对象。那么这段代码有什么问题呢?
答案 0 :(得分:1)
原来问题出现在集合的名称中:我将其命名为Msg
,而显然,如果模型名称为Msgs
,Mongo默认会在Msg
中查找。这里的解决方案是在Model调用中添加第3个arg:
var Msg = mongoose.model('Msg', {
process: String
// omitted fields
}, 'Msg'); // <-- collection name