我遇到麻烦,我的用户ID(也就是由mongodb创建的_id)不会让我搜索。
这是我的用户
db.users.find({})
{ "_id" : ObjectId("5912073cd87a401dd196a820"), "password" : "$2a$10$Sj/bxhSzeL8xzZYn8Vl71OjrG9Ayly9ueDi2O1iDwi7N4vYyZGWKi", "username" : "malin", "inFamily" : false, "bank" : 500, "defence" : 1, "attack" : 1, "cash" : -494055600, "xp" : 0, "rank" : 1, "bullets" : 0, "location" : 1, "permission" : 0, "health" : 0, "__v" : 0 }
如此处所示,其标识为5912073cd87a401dd196a820
。
这是我一直在呼唤的功能。
function userDetails(userid) {
return new Promise(function(resolve, reject) {
console.log("search: " + userid);
// Users.findById(userid, function (result) {
Users.findOne({_id: userid},function(result) {
console.log("search done");
console.log(result);
return resolve(result);
});
});
}
我在我的网站上使用这个功能,有些东西是有效的,有些则不是。 例如。当组件1调用它时,它可以工作,当组件2尝试时,它会失败。
findByid或findOne在失败时都不起作用。
以下是我的网站在其中一个失败的组件上运行的查询:
search: 5912073cd87a401dd196a820
Mongoose: users.findOne({ _id: ObjectId("5912073cd87a401dd196a820") }, { fields: {} })
logging /api/gameapi?action=getcrimemembers
navigate: false
search done
null
但是每个结果都是null / false,怎么回事?
答案 0 :(得分:0)
使用这个我必须工作得很好。 Mongoose函数已经返回了promise,所以你不需要将它包装在函数中:
Users.findOne({_id: userid}).then(result=>{...}).catch(err=>{...})