当用户存在于id时,Mongoose / mongodb返回null

时间:2017-05-11 15:51:34

标签: mongodb mongoose database

我遇到麻烦,我的用户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,怎么回事?

1 个答案:

答案 0 :(得分:0)

使用这个我必须工作得很好。 Mongoose函数已经返回了promise,所以你不需要将它包装在函数中:

Users.findOne({_id: userid}).then(result=>{...}).catch(err=>{...})