我如何确定 mongodb 是否返回空结果

How do i determine if mongodb is returning empty results

我设计了一个 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')
      }
    })
})

我尝试查询结果为空,但控制台仍然记录 "user found." 请帮忙!

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

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

改为检查结果的长度:

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

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

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

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