我有这个代码,它根据两个ID搜索文档。
User.find({
$or: [
{ id: req.body.myId },
{ id: req.body.id }
]
}, function(err, users) {
console.log(users)
});
这样可以正常工作,但是,我们假设req.body.myId
未定义,那么它将只获取与req.body.id
匹配的所有文档。我需要它是这样的,如果它找不到任何与一个id有关的文件,那么它不应该为其他Id获取任何东西,给予一个空的用户数组。
答案 0 :(得分:3)
在执行查询之前进行检查,如果其中一个参数未定义则不执行它,因此您不必对MongoDB进行不必要的调用。类似的东西:
if (!req.body.myId || !req.body.id) {
// return here empty array or whatever
}
在您的情况下,通常使用$in
运算符:
User.find({
id: {
$in: [req.body.myId, req.body.id]
}
}, function(err, users) {
console.log(users)
});
答案 1 :(得分:1)
这是一个奇怪的要求,但确定:
function findByTwoIds(id1, id2, callback) {
if (!id1 || !id2) {
callback(null, []);
} else {
User.find({
$or: [
{ id: id1 },
{ id: id2 }
]
}, callback);
}
}
并将其用于:
findByTwoIds(req.body.myId, req.body.id, function (err, users) {
if (err) {
console.log('Error:', err);
} else {
console.log(users);
}
});