通常,当我必须使用NodeJS和MongoDB发出GET请求时,我会对每个字段进行单独的搜索。
例如:
localhost:3000/movie/:name/:author - GET
正如我希望得到一部电影,想要的名称和作者一样,一切都会正常进行。
但是,如果我想这样进行请求查询,该怎么办:
localhost:3000/movies/filters[‘movies’]=USA&fields=id,name,author - GET
使用SAME查询在NodeJS和MongoDB中可以做到吗?
怎么做到呢?
非常感谢!
最佳答案
对的,这是可能的。
在第一个路径中,您使用request parameters。在第二条路径中,您尝试在该路径中使用request queries:/movies
。 (查询字符串不是路由路径的一部分)
但是,您的发言权还差一点,您可以使用以下字符串查询来执行GET请求:
localhost:3000/movies?filters[movies]=USA&fields[]=id&fields[]=name
^ ^ ^ ^
1 2 3 4
?
表示查询字符串的开始=
将键与其值分开&
分隔每个键=值对[]
将键视为数组然后,您可以使用
req.query
属性访问路由器中的值:router.get('/movies', (req, res) => {
console.log(req.query.filters.movies); // => USA
console.log(req.query.fields); // => [ 'id', 'name' ]
});
要了解更多信息,建议您阅读官方的Express routing guide。