MongoJS 节点 findOne 错误地返回无结果

Posted

技术标签:

【中文标题】MongoJS 节点 findOne 错误地返回无结果【英文标题】:MongoJS Node findOne falsely returns no results 【发布时间】:2014-10-12 06:11:29 【问题描述】:

使用MongoJS:https://github.com/mafintosh/mongojs

找到一切

db.users.find(, function(err,users) if (err) 抛出错误; 控制台.log(用户); )

返回用户。看起来不错

[ _id: 53f2faa6aed1689e84982b8b, Facebook: 电子邮件:'myname@gmail.com', 名称:“胡安·阿特金斯”, id: '764969936' , __v: 0 ]

当我尝试通过他的 id 找到该用户时:失败

db.users.findOne( _id: '53f2faa6aed1689e84982b8b' ,功能(错误,用户) if (err) 抛出错误; 控制台.log(用户); );

returns []

我知道数据库中有数据。我试过用不同的键(比如名字)搜索。为什么找不到数据?

【问题讨论】:

【参考方案1】:

你必须使用 ObjectId:http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html

db.users.findOne(
    _id:  new ObjectID('53f2faa6aed1689e84982b8b')
, function(err, user) 
    if (err) throw err;
    console.log(user);
);

【讨论】:

好电话,但我试过了ReferenceError: ObjectID is not defined @MatthewNolan 然后你需要使用驱动模块中的函数来定义它:var ObjectID = require('mongodb').ObjectID; 我正在使用包装器 mongojs。他们确实建议做类似的事情,但是当我尝试时,它说它没有方法 ObjectJD。 db.users.findOne( _id: mongojs.ObjectID('53f2faa6aed1689e84982b8b') , function(err, user) if (err) throw err; console.log(user); ); 嗯,这个API有不同的字母大小写:mongojs.ObjectId('523209c4561c640000000001')

以上是关于MongoJS 节点 findOne 错误地返回无结果的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose User.findOne 既不返回错误也不返回成功

MongoDB User.findOne(email:email)

user.findOne() 总是返回 null

Sails js findOne()返回结果,尽管不满足所有条件

节点,猫鼬“findOne”在另一个集合的“find”内的一个集合上

如何使用 mongojs 遍历整个 MongoDB 集合?