我只想问一下,如何将变量传递给mongoose查询?我已经尝试过这个,但总是得到一个空洞的结果。
exports.persontSearch = function (req, res, search) {
PersonInfo.find({$or: [
// {'name.first': /.*search.*/},
// {'name.last': /.*search.*/}
// {'name.first': {$regex: /.* + search + .*/}},
// {'name.last': /.*search.*/}
{'name.first': new RegExp('/.*' + search + '/.*')},
{'name.last': /.*search.*/}
]}, function (err, person) {
if (err) {
winston.error(err);
res.json(err);
}
res.json({
result: person
});
});
};
但是如果我将search
变量更改为实际值,则返回预期结果。
请帮忙。
BTW有办法避免new RegExp
吗?
答案 0 :(得分:0)
试试这个:
searchvalue = "/^abc/i";
exports.persontSearch = function (req, res, search) {
PersonInfo.find({$or: [
{'name.first': {$regex: searchvalue }}
]}, function (err, person) {
if (err) {
winston.error(err);
res.json(err);
}
res.json({
result: person
});
});
};
答案 1 :(得分:0)
@JohnnyHK对我的帖子发表评论。 工作样本就是这样。
exports.personSearch = function (req, res, search) {
PersonInfo.find({
$or: [
{ 'name.first': { $regex: search } },
{ 'name.last': { $regex: search } }
]
}, function (err, person) {
if (err) {
winston.error(err);
res.json(err);
}
res.json(person);
});
};