【问题标题】:Mongoose/mongodb return null when user exists by id当用户按 id 存在时,Mongoose/mongodb 返回 null
【发布时间】:2017-10-10 17:51:17
【问题描述】:

我的用户 ID(又名 _id 由 mongodb 创建)无法让我搜索。

这是我的用户

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 }

如此处所示,它的 ID 为 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,怎么会呢?

【问题讨论】:

  • 您查询中的{ fields: {} } 是什么?你想在这里做什么?
  • users.findone 函数调用它。 mongoose 字段就是它的查询方式。我唯一尝试的是根据 id 获取用户。
  • 试试这个users.findOne({ _id: ObjectId("5912073cd87a401dd196a820") })是否有效?
  • @node_saini 不起作用。
  • 我不认为这是您查询的问题。我想这可能是您查询的方式或某些连接问题或您的函数问题或函数调用问题或其他问题。您的整个代码在这里并不难调试。

标签: mongodb mongoose database


【解决方案1】:

使用它必须很好用。 Mongoose 函数已经返回了 Promise,所以你不需要将它包装在函数中:

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

【讨论】:

  • 但我确实检查了结果,它的 null 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
  • 2021-11-07
  • 2014-10-29
  • 2019-08-18
相关资源
最近更新 更多