首页 > 解决方案 > NodeJS Mongoose 不接受 $regex 中的字符串变量

问题描述

我得到了一条记录, admin.name = "FooBar" 我想在名称上做一个 findOne 但不区分大小写。

在 Studio3T 中,这工作正常...

db.admin.findOne(
     { name: { $regex: /^FoObAr/i } }
)

但是在 nodeJS 中,我似乎无法将包含正则表达式的变量放入 find 语句中......

Let ID = "FoObAr"
return resolve( adminModel.findOne( { "name" : { $regex: "/^" + ID + "$/i"} } ) );

这导致...(给出 0 个结果)

Mongoose: admin.findOne({ name: { '$regex': '/^FoObAr$/i' } }, { projection: {} })

我也试过

Let ID = "FoObAr"
return resolve( adminModel.findOne( { "name" : { $regex: /^ ID $/i } ) );

这导致...(给出 0 个结果)

Mongoose: admin.findOne({ name: { { $regex: /^ ID $/i } }, { projection: {} })

有任何想法吗?

标签: node.jsmongoose

解决方案


请使用正则表达式功能

admin.find({name:new RegExp(['^',ID, '$'].join(''), 'i')}).projection({})

推荐阅读