【问题标题】:Express + MongoDB - req.query to objectExpress + MongoDB - req.query 到对象
【发布时间】:2017-08-01 10:18:24
【问题描述】:

我尝试从 MongoDB 中过滤我的结果。我正在使用快递。这是我的 console.logs:

  1. req.query.filters 来自 URL:http://localhost:3000/test?filters=%7Bpersonalbest%3A%7B%27%24gt%27%3A%27170%27%7D%2Cname%3A%7B%27%24gt%27%3A%27M%27%7D%7D
  2. 我制作的一个对象,用于测试它是否适用于我的数据库并且确实有效
  1. {personalbest:{'$gt':'170'},name:{'$gt':'M'}}
  2. { 个人最佳:{ '$gt': '170' },姓名:{ '$gt': 'M' } }

代码:

var filters = req.query.filters
db.collection('skijumper').find(filters).toArray()

当然我得到了这个错误:

MongoError: 查询选择器必须是一个对象

将此 req.query 转换为对象的最佳方法是什么? 谢谢

【问题讨论】:

  • req.paramsreq.query 中的任何内容都只是一个“字符串”。实际上有bodyParser 中间件可以将req.body 的内容变成一个实际的对象。您可能应该改为在body 中发送对象。但本质上JSON.parse将“字符串”变成了“对象”。这意味着您可能还需要在 urlencoding 中“引用”。因此,在请求正文中发送似乎要容易得多。
  • 谢谢,感谢您的帮助!

标签: javascript node.js mongodb express decode


【解决方案1】:

前端:

var filters = {personalbest:{'$gt':'170'},name:{'$gt':'M'}};
var url = "http://localhost:3000/test?filters=" + encodeURIComponent(JSON.stringify(filters));

后端:

var filters = JSON.parse(req.query.filters);

【讨论】:

  • 谢谢,这正是我想要的 :)
  • 太好了!我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多