我有一种方法可以根据其 ObjectID 在我的数据库中查找文档:
console.log('id: ' + id + ' type: ' + typeof id);
collection.findOne({'_id':new ObjectID(id)}, function(error,doc) {
if (error) {
callback(error);
} else {
callback(null, doc);
}
});
当我运行它时,我收到以下错误:
/myPath/node_modules/monk/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/connection/base.js:245
throw message;
^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
at new ObjectID (/myPath/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:38:11)
at /myPath/collectionDriver.js:134:41
这指的是collection.findOne()
上面的行。
我在该调用之前拥有的控制台日志将 id 输出为 24 个十六进制字符的字符串:
id: "55153a8014829a865bbf700d" type: string
在此之前,我使用将 id 从对象转换为字符串,JSON.stringify()
但它似乎可以成功工作,如我的 console.log 所示。
在 Robomongo 中运行db.myCollection.findOne({_id : ObjectId("55153a8014829a865bbf700d")})
会带来预期的结果。