2014-12-04 67 views
2

我想在Collection.find查詢中使用一個變量作爲字段說明,但只是山雀忽略它流星Collection.find使用變量作爲動態蒙戈查詢字段

var qry = "{\"" + field_name + "\":" + field_value + "}" 
    console.log(qry)// {"customer_active":true} 
    Customers.find(qry).map(function(customer){// doesn't find anything 
     console.log(customer) 
     var groups = customer.customer_group_id.push(a._id) 

     Customers.update({$set: {customer_group_id: groups}}) 
    }) 

如何建立一個動態查詢

回答

7

qry需要是一個對象,而不是一個字符串。因此,建立像這樣代替:

var qry = {}; 
qry[field_name] = field_value; 
+0

這並不工作,我得到一個'意外令牌[' – Moshe 2014-12-04 15:09:33

+1

做工精細當我嘗試它。也許你有一個錯字? – JohnnyHK 2014-12-04 15:17:46

0

我包裹查詢在JSON.parse的伎倆

var qry = "{\"" + field_name + "\":" + field_value + "}" 
    console.log(JSON.parse(qry)) 
    Customers.find(JSON.parse(qry)).map(function(customer){ 
     console.log(customer) 
     var groups = customer.customer_group_id.push(a._id) 

     Customers.update({$set: {customer_group_id: groups}}) 
    }) 
+4

你正在想太多像SQL,你必須拼湊一個字符串。試着瞭解@JohnnyHK在說什麼。你需要一個JavaScript對象而不是一個字符串。您不必構建字符串,然後轉換整個事物。你可以按JohnnyHK向你展示的方式增量構建JavaScript對象。 – 2014-12-04 15:32:07