通常,当我必须使用 NodeJS 和 MongoDB 发出 GET 请求时,我会对每个字段进行单独的搜索。
例如:
localhost:3000/movie/:name/:author - GET
正如我所期望的那样,得到一部电影、想要的名字和作者,一切都会正常进行。
但是如果我想发出这样的请求查询该怎么办:
localhost:3000/movies/filters[‘movies’]=USA&fields=id,name,author - GET
在 NodeJS 和 MongoDB 中使用相同的查询可能吗?
如何做到这一点?
非常感谢!
最佳答案
是的,这是可能的。
在您使用的第一条 route request parameters 。在第二条 route ,您尝试使用 request queries在路线上:/movies
。 (查询字符串不是路由路径的一部分)
但是你有点偏离,在 Express 中,你可以使用如下字符串查询执行 GET 请求:
localhost:3000/movies?filters[movies]=USA&fields[]=id&fields[]=name
^ ^ ^ ^
1 2 3 4
?
表示查询字符串的开始=
将键与其值分开&
分隔每个键=值对[]
将 key 视为数组
然后您可以使用 req.query
访问路由器中的值属性:
router.get('/movies', (req, res) => {
console.log(req.query.filters.movies); // => USA
console.log(req.query.fields); // => [ 'id', 'name' ]
});
想要了解更多,建议您阅读官方Express routing guide .
关于node.js - 如何创建通过特定参数过滤搜索的查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282799/