Mongoose find()不返回结果
我build立了一个使用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,因为它没有find任何结果。 当我运行:
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
干杯
所以,这看起来像是你已经在现有的数据库中创build了集合,现在你正试图用mongoose模型来访问这些集合。
问题是mongoose使用了一些你可能没有意识到的默认值,所以你在shell中显示的例子与默认的mongoose不一样。
因此,您可以重新命名您的集合以匹配默认预期的mongoose或更改mongoose确实匹配您的现有名称。 在后一种情况下,您可以直接定义模型名称,如下所示:
mongoose.model( "Todo", toDoSchema, "Todo" );
所以方法的第三个参数实际上指定了用于集合的显式名称。 如果没有这个默认规则下的假定名称将是“todos”。
使用任何方法为了使他们匹配。
面对同样的问题,但在我的情况下,我使用了一个查询filter,如model.find({"someId": myVar}, ...)
,但myVar包含以前从Mongoose,而不是一个string检索的ObjectID 。
使用console.log(myVar);
,它看起来像我使用的是一个string,但是console.log(typeof myVar);
告诉我,我不是(显示object
而不是string
)。
- AWS SES使用node.js中的SNS通知转发,投诉和/或交付
- TypeScript:我可以使用“import * from”和“require(*)”
- 节点js:使用相同的参数名称在另一个函数内执行一个函数
- 打包/解包function为node.js
- 将一个variables从javascript传递给ejs
- 是否可以在ES6项目中使用自定义types定义?
- 尝试在node.js中获取AESencryptionstring以匹配.net中的encryption值
- Selenium-WebDriver如何使用JavaScript和Firefox浏览器突出显示元素
- 访问由Node的Expressparsing的JSONstringbodyParser()