我设计了一个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')
}
})
})
我尝试查询,结果将为空,但控制台仍记录“找到用户”。请帮助!
答案 0 :(得分:1)
您正在使用find
。此函数始终返回一个数组,如果找不到用户,它将返回一个空数组,该数组永远不等于null
。
如果使用功能findOne
,则将返回文档或null
。
改为检查结果的长度:
} else if (user.length === 0) {
如果只想检索一个文档,则可以使用findOne:
users.findOne({name: {$regex: ".*"+req.params.name+".*"}}).exec( // ...
在这种情况下,您的支票不需要更改。