我试图将对象传递给MongoClient collection.find()方法,但我不想在值周围引用。如果我传递一个文字它按预期工作:
cursor = collection.find({EmployeeName: {'$regex': /Jo/i}});
但是,如果我尝试构建该对象,如:
var queryt = "/Jo/i";
var queryo = {
EmployeeName: {'$regex': queryt}
};
它不起作用。如果我做了console.log(queryo)
我可以看到" Jo / i"周围有引号:
{ EmployeeName: { '$regex': '/Jo/i' } }
请注意,在我的应用程序中,queryt实际上是通过从“查询”中提取值来设置的。从' get'返回的对象来自快递的功能。例如,我正在调用网页的结尾URL为"?EmployeeName:/ Jo / i"。在我的" get"我正在做的功能:
var queryt=req.query.EmployeeName;
所以,基本上我试图使用这个node.js应用程序作为后端服务器,通过http get请求接受查询。
我尝试了各种方法来删除引号,但没有成功。
对不起,如果这是一个新手类型的问题,但我只是在学习,并且已经花了好几个小时试图解决它。我希望一些经验丰富的node.js开发人员可以快速告诉我如何构造这个对象,这样collection.find就会接受它。谢谢!
答案 0 :(得分:0)
删除 var queryt = "/Jo/i";
中的双引号,这将创建字符串。
它应该是var queryt = /Jo/i;
这将创建正则表达式
更新:kcantrel找到答案。上面的方法不起作用。以下方法适合他。
queryt = RegExp("jo", "i")