我有一个使用名为Todo的模型的路由设置,如下所示:
app.get('/api/todos', function(req, res) {
Todo.find({},function(err, todos) {
if (err)
res.send(err);
console.log("number of todos " + todos.length);
res.json(todos); // return all todos in JSON format
});
});
但是,todos.length始终为0,因为它找不到任何结果。当我跑步时:
use test3
db.Todo.find()
我确定我已经连接到同一个数据库。我可以在mongod控制台中看到连接。我的连接位于config / db.js文件中:
module.exports = {
url : 'mongodb://localhost/test3'
}
我的server.js中的连接如下:
var db = require('./config/db');
mongoose.connect(db.url);
在Mongo Shell中,我得到1个结果。我期望此结果将由find查询返回。有什么我想念的吗?我正在使用Mongoose 3.6
干杯
因此,这非常像是您已经在现有数据库中创建了集合,现在您正尝试使用猫鼬模型访问这些集合。
问题是猫鼬使用了一些您可能不知道的默认值,因此您从shell中显示的示例与猫鼬默认情况下所执行的操作不同。
因此,您可以重命名集合以匹配默认情况下的猫鼬期望,或者更改猫鼬所做的事情以匹配您现有的名称。在后一种情况下,您可以直接定义模型名称,如下所示:
mongoose.model( "Todo", toDoSchema, "Todo" );
因此,该方法的第三个参数实际上指定了用于集合的显式名称。否则,默认规则下的假定名称将为“ todos”。
使用任何一种方法以使它们匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句