2017-08-01 85 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

太棒了!我很高興能夠提供幫助。 –