Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB查询中将javascript变量用作$regex的值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

在MongoDB查询中将javascript变量用作$regex的值

在MongoDB查询中将javascript变量用作$regex的值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图将参数传递到mongo查询中——如果我键入文本,它可以正常工作,但是,当我尝试用变量(参数)替换文本时,它失败了 想象一个包含“事物”的数据集 我有办法找到“书”“书”“书”或“毯子” 如果我用字面意义上的“书”来做这件事,它会起作用 function( name, callback ) { Catalog .find({ 'thing.name': {"$regex": /Book/, "$options": "i" }}) .exec(callb

我试图将参数传递到mongo查询中——如果我键入文本,它可以正常工作,但是,当我尝试用变量(参数)替换文本时,它失败了

想象一个包含“事物”的数据集

我有办法找到“书”“书”“书”或“毯子”

如果我用字面意义上的“书”来做这件事,它会起作用

function( name, callback ) {
    Catalog
        .find({ 'thing.name': {"$regex": /Book/, "$options": "i" }})
        .exec(callback);
}
但是-我希望使用参数“name”

function( name, callback ) {
    Catalog
        .find({ 'thing.name': {"$regex": /name/, "$options": "i" } })
        .exec(callback);
}

但这不起作用,它似乎在寻找文本“name”,而不是传入的值。如何对此进行转义?

创建
RegExp
类的实例。它还允许您从查询中删除
$options
属性,如下所示:

function( name, callback ) {

    var regexName = new RegExp(name, "i");
    Catalog
        .find({ 'thing.name': { "$regex": regexName } })
        .exec(callback);

}

可以这样做:-

函数(名称、回调){
目录
.find({“thing.name”:{$regex:name$options:“i”})
.exec(回调);
}
function( name, callback ) {

    var regexName = new RegExp(name, "i");
    Catalog
        .find({ 'thing.name': { "$regex": regexName } })
        .exec(callback);

}