我如何确定 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( // ...
在这种情况下,您的支票不需要更改。
我设计了一个 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( // ...
在这种情况下,您的支票不需要更改。