node.js - 如何创建通过特定参数过滤搜索的查询字符串?

标签 node.js mongodb rest express mongoose

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

相关文章:

python - 有选择地显示 Django REST 序列化程序字段

rest - ServiceStack剩余为空吗?

node.js - 在node.js中,为什么我在尝试写入不存在的文件时没有收到错误

mongodb - 最近的副本集读取偏好仍然很慢

node.js - MongoDB:动态计数

node.js - 文件系统等重名功能

javascript - 类型错误 : object is not a function in node Js

javascript - Node.js 文件上传(Express 4、MongoDB、GridFS、GridFS-Stream)

javascript - Node.js 服务中的 socket.io 事件使用的套接字

javascript - node.js 在服务器目录中提供 HTML 文档