通常,当我必须使用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

10-08 06:33
查看更多