【发布时间】:2017-08-01 10:18:24
【问题描述】:
我尝试从 MongoDB 中过滤我的结果。我正在使用快递。这是我的 console.logs:
- 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
- 我制作的一个对象,用于测试它是否适用于我的数据库并且确实有效
- {personalbest:{'$gt':'170'},name:{'$gt':'M'}}
- { 个人最佳:{ '$gt': '170' },姓名:{ '$gt': 'M' } }
代码:
var filters = req.query.filters
db.collection('skijumper').find(filters).toArray()
当然我得到了这个错误:
MongoError: 查询选择器必须是一个对象
将此 req.query 转换为对象的最佳方法是什么? 谢谢
【问题讨论】:
-
req.params或req.query中的任何内容都只是一个“字符串”。实际上有bodyParser中间件可以将req.body的内容变成一个实际的对象。您可能应该改为在body中发送对象。但本质上JSON.parse将“字符串”变成了“对象”。这意味着您可能还需要在 urlencoding 中“引用”。因此,在请求正文中发送似乎要容易得多。 -
谢谢,感谢您的帮助!
标签: javascript node.js mongodb express decode