我想执行查询,就像在sql中执行通配符搜索一样,所以我在nodejs和mongoose中使用了regex。当我使用硬代码时,它可以工作,但是当我放入变量时,它就不能工作。
用硬代码编码
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);
}
});
最佳答案
您正在使用带字符串值的变量,而不是RegExp文字。
更改
var regFiled='/.*RTE.*/';
至
var regFiled=/.*RTE.*/;
它应该像硬编码版本一样工作。
或者,如果
regFiled
确实旨在保留表达式的字符串形式,则可以使用以下命令将其转换为RegExp对象:{$regex:new RegExp(regFiled)}
关于regex - Node.js中正则表达式面临的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32314508/