REST方法GET用于按标准搜索来自mongodb的json

时间:2014-10-09 21:30:07

标签: node.js mongodb rest express mongoose

我有一个带有express和mongoose的nodejs服务器,我想使用方法GET进行搜索,符合我想提供的标准作为JSON对象,是否有人可以帮助我如何实现它?

或者我应该使用POST或PUT来制作它?

3 个答案:

答案 0 :(得分: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
     });

答案 1 :(得分:0)

如果您不确定要使用的HTTP VERB,

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
});

答案 2 :(得分:0)

你有两个选择 - 使用HTTP GET参数或将整个条件编码为JSON字符串并传递该字符串。

第一种选择,使用params:

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

您可以通过req.query.crit在nodejs / express中阅读。但这是个坏主意,因为没有办法保留数据类型。例如,数字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 / express端解析:

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

这样就可以保留您的数据类型,并且它将按预期工作。