我想执行一个查询就像sql中的外卡搜索一样。所以我在nodejs和mongoose中使用正则表达式。当我使用硬代码然后它的工作原理但是当我输入变量时它不会工作。问题出在哪里。< / p>
带硬编码的代码
AlertModel.find({"alertName":{$regex: /.*RTE.*/}}).lean().exec(function (err, result) {
if(err)
{
console.log(err);
}
else
{
return res.status(200).send(result);
}
});
但是在使用变量的情况下它不会起作用
var regFiled='/.*RTE.*/';
AlertModel.find({"alertName":{$regex:regFiled}}).lean().exec(function (err, result) {
if(err)
{
console.log(err);
}
else
{
return res.status(200).send(result);
}
});
答案 0 :(得分:0)
您正在使用带字符串值的变量而不是RegExp文字。
更改
var regFiled='/.*RTE.*/';
到
var regFiled=/.*RTE.*/;
它应该像硬编码版本一样工作。
或者,如果regFiled
确实意味着保存表达式的字符串形式,则可以将其转换为RegExp对象:
{$regex:new RegExp(regFiled)}