Py学习  »  MongoDB

如何在页面上显示MongoDB查询结果?

tygcraig • 5 年前 • 723 次点击  

我有一个路由设置,它使用一个名为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'
}

my server.js中的连接如下:

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

在MongoShell中,我得到1个结果。我希望通过find查询返回这个结果。 有什么我错过的吗? 我用的是蒙古斯3.6

干杯

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31644
 
723 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Neil Lunn
Reply   •   1 楼
Neil Lunn    10 年前

所以这看起来非常像是您已经在一个现有的数据库中创建了集合,现在您正试图用Mongoose模型访问这些集合。

问题是Mongoose使用了一些您可能不知道的默认值,所以您在shell中显示的示例与Mongoose默认情况下所做的不同。

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

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

所以第三个论点 method 实际上指定要用于集合的显式名称。如果不这样做,默认规则下的假定名称将是“todos”。

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