2014-10-09 23 views
0

我有一個nodejs服務器與快遞和貓鼬,我想使用方法GET搜索accore準則,我想提供作爲JSON對象任何人都可以幫我實施它?REST方法GET按標準搜索作爲json來mongodb

或者應該使用POST或PUT來製作它?

+0

那麼,它是GET,PUT還是POST你想要的? – soulcheck 2014-10-09 21:33:42

+0

對我來說 - 使用添加新對象PUT使用更新GET使用得到這是我的理解,但我不確定在GET我可以提供json查詢作爲正文等 – Robert 2014-10-09 21:35:13

+0

@Robert你不能提供json查詢,但您可以提供搜索查詢。例如'http://hostname.com/modelname?field = 2&another_param = 3',並在你的快速路由器中處理它 – 2014-10-09 21:38:10

回答

0

http://hostname/modelname?criteria1=1&criteria2=2

router.route('/modelname') 
    .get(function (req, res, next) { 
     req.query.criteria1 === 1 // true 
     req.query.criteria2 === 2 // true 
    }); 
0

如果你不確定你想要使用什麼HTTP動詞,

POST - is primarily used for creating resources on the server 

PUT - is used to update an existing resource 

GET- to retrieve a resource 

我會用GET在這種情況下

GET http://myhost.com?q=word1+word2+word3+word4 

app.get('*', function(req, res) { 
    // do something with the req.query.q array 
}); 
0

你」我有兩個選擇 - 使用HTTP GET參數或將整個條件編碼爲JSON字符串並傳遞該字符串。

第一種選擇,通過使用PARAMS:

?crit[foo.bar][$eq]=abc&crit[foo.baz][$ne]=def 

你可以在閱讀的NodeJS它/通過req.query.crit表達。但這是個壞主意,因爲沒有辦法保留數據類型。例如,編號1變成字符串"1"。不要使用它 - MongoDB是數據類型敏感,所以查詢{"foo.bar":{$eq:1}}{"foo.bar":{$eq:"1"}}

第二種選擇完全不同的是來urlencode JSON標準:

?critJSON=%7B%22foo.bar%22%3A%7B%22%24eq%22%3A%20%22abc%22%7D%2C%22foo.baz%22%3A%7B%22%24ne%22%3A%20%22def%22%7D%7D 

和解析它的NodeJS /快遞方面:

var crit = JSON.parse(req.query.critJSON) 

這樣你的數據類型被保留下來並且能夠按預期工作。