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

Posted

技术标签:

【中文标题】我如何确定 mongodb 是不是返回空结果【英文标题】: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')
      
    )
)

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

【问题讨论】:

【参考方案1】:

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

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

改为检查结果的长度:

 else if (user.length === 0) 

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

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

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

【讨论】:

感谢它的工作。显然我不能使用 findOne 因为可以有许多同名的用户。再次感谢!!!

以上是关于我如何确定 mongodb 是不是返回空结果的主要内容,如果未能解决你的问题,请参考以下文章

Java实现对mongoDB的两表关联查询

Nestjs Mongodb 总是返回空数组

Mongodb $lookup 返回空数组

MongoDB Mongoose 聚合查询深度嵌套数组删除空结果并填充引用

未找到结果时如何从 Mongoose Find 查询返回自定义消息而不是空数组

如何确定是不是在 PHP 中返回了 SQL 结果?