Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose find()未返回结果_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Mongoose find()未返回结果

Javascript Mongoose find()未返回结果,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我设置了一个路由,它使用一个名为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 al

我设置了一个路由,它使用一个名为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'
}
myserver.js中的连接如下:

var db = require('./config/db');
mongoose.connect(db.url);
在Mongo Shell中,我得到1个结果。我希望find查询返回这个结果。 我错过了什么吗? 我用的是猫鼬3.6


干杯

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

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

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

猫鼬模型(“Todo”,toDoSchema,Todo”); 因此,的第三个参数实际上指定了用于集合的显式名称。如果没有此项,默认规则下的假定名称将为“TODO”


使用这两种方法都可以使它们匹配。

您确定在程序中连接的数据库与使用shell时连接的数据库相同吗?如果您不确定,请在问题中添加您的数据库连接代码和您与shell连接的示例。我已经添加了您请求的更多信息,还注意到mongoose默认情况下会将模型名称复数,并将其转换为小写和其他规则。因此,除非您覆盖此项,否则mongoose正在寻找一个名为“todos”的集合,该集合可能不存在辉煌:):Di在两个小时内遇到了类似的问题,我需要在我收藏的名字后面加上“s”,天哪。。。TYCan不相信这个答案仍然正确我甚至没有碰我的be/mongo/fe,什么都没有,30多天后它停止返回结果(返回一个空数组)。经过几个小时的痛苦,我终于找到了这条线索。我加入了第三个论点,它奏效了。我不明白这怎么还没修好。不管怎样,未来的读者,只需添加第三个论点,不要相信猫鼬。