use*_*643 17 javascript mongoose mongodb node.js
我有一个路由设置,使用一个名为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
});
});
Run Code Online (Sandbox Code Playgroud)
但是,todos.length始终为0,因为它没有找到任何结果.当我跑:
use test3
db.Todo.find()
Run Code Online (Sandbox Code Playgroud)
我确信我已连接到同一个数据库.我可以在mongod控制台中看到连接.我的连接在config/db.js文件中:
module.exports = {
url : 'mongodb://localhost/test3'
}
Run Code Online (Sandbox Code Playgroud)
我的server.js中的连接如下:
var db = require('./config/db');
mongoose.connect(db.url);
Run Code Online (Sandbox Code Playgroud)
在Mongo Shell我得到1个结果.我希望通过查询查询返回此结果.有没有我错过的东西?我使用的是Mongoose 3.6
干杯
Nei*_*unn 61
所以这看起来很像是你已经在现有数据库中创建了集合,现在你正试图用mongoose模型访问它们.
问题是mongoose使用了一些您可能不知道的默认值,因此您从shell中显示的示例与默认情况下mongoose正在执行的示例不同.
因此,您可以重命名集合以匹配默认情况下mongoose所期望的集合,或者更改mongoose与现有名称匹配的内容.在后一种情况下,您可以直接定义模型名称,如下所示:
mongoose.model( "Todo", toDoSchema, "Todo" );
Run Code Online (Sandbox Code Playgroud)
因此,该方法的第三个参数实际上指定了用于集合的显式名称.如果没有这个,默认规则下的假定名称将是"todos".
使用任一方法,以使它们匹配.
归档时间: |
|
查看次数: |
14263 次 |
最近记录: |