我的数据库有以下数据:
db.users.find()
{ "_id" : ObjectId("5580c79aa11e7310b2985ab1"), "email" : "an_email", "color" : "", "username" : "", "__v" : 0 }我使用以下语法使用Mongoose查询它:
User.findById("5580c79aa11e7310b2985ab1", function(error, user) { }它为错误和用户返回空。奇怪的是,Mongoose的调试显示了以下正确的查询:
users.findOne({ _id: ObjectId("5580c79aa11e7310b2985ab1") })直接查询MongoDB查找预期数据:
db.users.findOne({ _id: new ObjectId("5580c79aa11e7310b2985ab1") })
{
"_id" : ObjectId("5580c79aa11e7310b2985ab1"),
"email" : "an_email",
"color" : "",
"username" : "",
"__v" : 0
}用findById代替findOne,并寻找电子邮件工作。我真的不知道了..。有什么建议吗?
发布于 2015-06-17 01:33:40
findById()需要一个id,而不是一个对象。示例:
Book.findById(req.user.id, function(err, book) {...}findOne()需要一个对象,因此它可以工作。
发布于 2015-06-17 03:25:11
似乎这是一个错误与猫鼬4.x -我回到了猫鼬3.8,一切都很好。
https://stackoverflow.com/questions/30880860
复制相似问题