【问题标题】:How do i determine if mongodb is returning empty results我如何确定 mongodb 是否返回空结果
【发布时间】:2019-07-20 21:05:33
【问题描述】:

我设计了一个 API 来使用 express 从 MEAN 堆栈中的 mongodb 获取用户,我需要确定 mongodb 是否返回一个空数组。以下是我的代码:

router.get('/user/:name', function (req, res) {
  users
    .find({ name: { $regex: '.*' + req.params.name + '.*' } })
    .exec(function (err, user) {
      if (err) {
        console.log(err)
      } else if (user === null) {
        console.log('user not found')
      } else {
        res.json(user)
        console.log('user found')
      }
    })
})

我尝试查询结果为空,但控制台仍然记录“找到用户。”请帮助!

【问题讨论】:

    标签: mongodb api mean-stack mean


    【解决方案1】:

    您正在使用find。这个函数总是返回一个数组,如果没有找到用户它返回一个空数组,它永远不等于null

    如果您使用函数findOne,则将返回一个文档或null

    改为检查结果的长度:

    } else if (user.length === 0) {
    

    如果只想检索一个文档,可以使用 findOne:

    users.findOne({name: {$regex: ".*"+req.params.name+".*"}}).exec( // ...
    

    在这种情况下,您的支票不需要更改。

    【讨论】:

    • 感谢它的工作。显然我不能使用 findOne 因为可以有许多同名的用户。再次感谢!!!
    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2021-07-22
    相关资源
    最近更新 更多