我有一个带有express和mongoose的nodejs服务器,我想使用方法GET进行搜索,符合我想提供的标准作为JSON对象,是否有人可以帮助我如何实现它?
或者我应该使用POST或PUT来制作它?
答案 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)
这样就可以保留您的数据类型,并且它将按预期工作。