我有一个使用名为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”。
使用任何一种方法以使它们匹配。
问题内容: 我能找到的所有带有猫鼬结果的页面都可以做到这一点: 如何从查询中返回结果,更像这样? 这样我就可以在页面上发布多个结果? 喜欢: 能做到吗? 问题答案: 您正在尝试强制执行同步范例。就是行不通。node.js是单线程的,大部分情况下- 完成io后,便产生了执行上下文。信令通过回调进行管理。这意味着您具有嵌套的回调,命名函数或流控制库,以使外观看起来更好。 https://github.
问题内容: 我刚开始和猫鼬一起玩。我有以下代码: 将条目添加到数据库中没有问题,但是检索它们时遇到了问题。我对整个工作原理有些困惑。我的理解如下: 有一些架构,就像oop中的类一样,因此只是数据库中记录的蓝图。该模型是一条记录,可以,也许更多,因为我看到您可以向模型添加方法。好吧…我不太了解如何使用它们。你能给我一个线索,他们到底是什么? 返回主题:发出find命令时,它会调用匿名函数,而docs
问题内容: 我正在研究猫鼬在mongodb中的数据库中列出一个集合中的所有数据: 根据要求: 我正在执行以下代码: 我已经在数据库中输入了条目,但是上面的代码返回了空值。为什么? 编辑:以下代码也返回空: 使用的架构: 问题答案: 您的问题是猫鼬将集合复数。猫鼬正在查询“组织”,但您的数据在mongodb中为“组织”。使它们匹配,您应该很好。您可以通过mongoshell在mongodb中对其重命
问题内容: 我一直在努力让Mongoose从本地MongoDB实例返回数据。我可以在MongoDB Shell中运行相同的命令,然后返回结果。我在stackoverflow上找到了一篇帖子,谈论我在这里遇到的确切问题; 我已经遵循了这篇文章的答案,但是我似乎仍然无法正常工作。我创建了一个简单的项目,试图使事情变得简单,这是代码。 这是2 console.log语句的响应: 错误:空 用户名:nul
问题内容: 在Node.js中使用Mongoose,您可以使用find返回一些字段。例如。 但我似乎无法弄清楚如何使用findOneAndUpdate返回某些字段。 有人做到过吗?我在文档中找不到它。 问题答案: 从说明书,该参数需要一个关键的它,因为还有其他的细节,比如和地方适用。您 还 需要以下选项: 您也可以使用 请注意,没有返回的文档处于处理更新修改 之前 的状态。有时候这就是您的意思,但
问题内容: 我有这个电话: 我在哪里指定要返回的属性?在文档中找不到它。以上返回整个对象。我只希望返回一些属性。 这是我的架构: 我不想在我的休息电话中包含项目数组。 问题答案: 您使用投影。猫鼬查询文档中的第一个示例具有投影操作。 注意:不是真正的代码b / c,我用三颗星突出显示了重要的部分 该方案没有规定,但我认为例子是再清楚不过。