2015-04-30 63 views
0

我已經使用node.js開發了一個Restful服務,該服務從用戶獲取一些值。根據給定的值,它重新格式化查詢字符串。但是,每當我想將這個查詢傳遞給mongoDB的findone()並調用該服務時,它在瀏覽器上顯示「查詢選擇器必須是對象」消息。如何使用node.js將格式化查詢傳遞給mongo中的findOne()

var query = "{" ; 
if(orderNo == " "){ 
     // Don't append anything 
}else{ 
     query = query + "'orderNo' : " + orderNo ; 
} 
. 
. 
. 
query = query + "}"; 

而且,我也試過象下面這樣:

var query = {}; 
query[orderNo] = orderNo; 

db.collection('*****').findOne(query, function(err, item) { 
    console.log(item); 
    res.jsonp(item); 
}); 

在這兩種情況下,我得到的瀏覽器相同的結果。 任何人都可以引導我如何在MongoDB中查詢這些查詢。

回答

1

你幾乎在你的第二次嘗試。當你這樣做時

var query = {}; 
query[orderNo] = orderNo; 

你創建一個對象的鍵值名稱與值相同!例如,如果orderNo值是12345,那麼上面的語句會產生物體

query = { 
    "12345": 12345 
} 

你可以使用相同的bracket notation創建合適的查詢object property

query = { 
    "orderNo": 12345 
} 

爲如下:

var query = {}; 
if(orderNo != " ") query["orderNo"] = orderNo; 

db.collection('*****').findOne(query, function(err, item) { 
    console.log(item); 
    res.jsonp(item); 
}); 
相關問題