2017-05-25 147 views
0

我想传递一个对象到MongoClient的collection.find()方法,但我不想引号围绕值。如果我通过文字它按预期工作:如何使用不带引号的文本字符串创建对象?

cursor = collection.find({EmployeeName: {'$regex': /Jo/i}}); 

但是,如果我尝试建立一个对象,如:

var queryt = "/Jo/i"; 
var queryo = { 
    EmployeeName: {'$regex': queryt} 
}; 

它不工作。如果我做了console.log(queryo)我可以看到,周围有“乔/我”的报价:

{ EmployeeName: { '$regex': '/Jo/i' } } 

注意,在我的应用程序queryt实际上是由于从由返回“查询”对象提取值设置来自快递的'取得'功能。例如,我打电话给结尾的URL为“?EmployeeName:/ Jo/i”的网页。在我的“获取”功能,我这样做:

var queryt=req.query.EmployeeName; 

所以,基本上我想使用这个应用程序的Node.js是后端服务器,通过HTTP GET请求,接受查询。

我试过各种方法的条形引号,但没有成功。

对不起,如果这是一个新手型问题,但我只是在学习,并且已经花了数小时试图解决它。我希望有更多经验丰富的node.js开发人员能够快速告诉我如何构建此对象,以便collection.find将接受它。谢谢!

+0

从var queryt =“/ Jo/i”中删除引号;' - 目前您正在创建一个字符串而不是正则表达式对象。它应该是'var queryt =/Jo/i;'就像你演示的第一种方式一样。 – nnnnnn

回答

0

删除 var queryt = "/Jo/i";中的双引号这将创建字符串。

应该是无功 queryt = /Jo/i;这将创建正则表达式

更新:kcantrel找到答案。上面的方法不起作用。下面的方法适用于他。

queryt = RegExp("jo", "i") 
+0

好的,我明白了。我需要简单地使用queryt = RegExp(“jo”,“i”)将字符串转换为正则表达式,因为这是“find()”实际上期望的。 – kcantrel

+0

@kcantrel很酷。我可以用你的答案更新我的答案吗? –

+0

是的,请。我花了一段时间才弄清楚你想告诉我什么。由于我的经验不足,不是你的错,我的。但是,一旦我意识到“正则表达式”是一个特定的对象,我很快就知道我需要做什么。 – kcantrel

相关问题