2017-08-01 86 views
1

我尝试从MongoDB过滤我的结果。我正在使用Express。这里是我的console.logs:Express + MongoDB - 请求对象

  1. req.query.filters从网址: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. { personalbest: { '$gt': '170' }, name: { '$gt': 'M' } }

代码:

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

当然,我得到这个错误:

MongoError: query selector must be an object

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

+0

任何东西'req.params'或'req.query'简直就是一个 “串”。实际上有'bodyParser'中间件用于将'req.body'内容制作成实际的对象。您可能应该在'body'中发送对象。但基本上''JSON.parse'“字符串”到“对象”。这意味着你可能需要在urlencoding中“引用”。因此,在请求主体中发送似乎更容易。 –

+0

谢谢,感谢您的帮助! –

回答

0

前端:

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); 
+0

谢谢,那就是我一直在寻找:) –

+0

太棒了!我很高兴能够提供帮助。 –