我有一个使用名为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”。
使用任何一种方法以使它们匹配。