2017-05-25 151 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

相關問題