我设置了一条路由,使用了一个名为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
    });
});

然而,托多.长度始终为0,因为它找不到任何结果.

use test3
db.Todo.find() 

我确信我已连接到同一个数据库.我可以在mongod控制台中看到连接.

module.exports = {
    url : 'mongodb://localhost/test3'
}

我的服务器中的连接.具体如下:

var db = require('./config/db');
mongoose.connect(db.url);

在Mongo Shell中,我得到1个结果.我希望find查询返回这个结果.

干杯

推荐答案

这看起来很像,你已经在现有数据库中创建了集合,现在你正试图用mongoose模型访问这些集合.

问题是mongoose使用了一些您可能不知道的默认值,因此您在shell中展示的示例与mongoose默认使用的示例不同.

因此,您可以重命名集合以匹配mongoose在默认情况下的期望,或者更改mongoose的操作以匹配现有的名称.在后一种情况下,可以直接定义模型名称,如下所示:

mongoose.model( "Todo", toDoSchema, "Todo" );

所以method的第三个参数实际上指定了用于集合的显式名称.如果没有这个,默认规则下的假定名称将是"TODO".

使用任何一种方法使它们匹配.

Mongodb相关问答推荐

MongoDB索引使用

在MogoDB中按时间间隔分组、统计文档和获取间隔时间

如何在MongoDB中对两个数组进行分组?

发布到 MongoDB 时生成的附加id字段

数组过滤器 MongoDB

mongoDB中数组中的聚合和元素

在golang中的mongodb中的集合列表中打印集合

从嵌套数组中 id 匹配的另一个集合中获取所有字段

$eq 的目的是什么

如何在 Mongoose 中定义一个通用的嵌套对象

更新 mongoengine 中的嵌入文档列表

如何检索 MongoDb 集合验证器规则?

mongoose如何在幕后工作

我怎样才能更快地scrape

MongoDB展开多个数组

如何在mongodb中删除数组的第n个元素

mongoose得到`TypeError: user.save is not a function` - 出了什么问题

如何在 MongoDB 的 $match 中使用聚合运算符(例如 $year 或 $dayOfMonth)?

在 Mongo 中,$near 和 $nearSphere 有什么区别?

MongoDB 查询:字段不存在或具有特定值