2017-08-01 14 views
1

MongoDBから結果をフィルタリングしようとしています。私はエクスプレスを使用しています。 URLから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' } }

を行うかどうかをテストするために私が作ったオブジェクトここでは私のconsole.logsですコード:

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'でのものは単に "文字列" です。実際には 'req.body'コンテンツを実際のオブジェクトにするための' bodyParser'ミドルウェアがあります。おそらく、代わりに '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

それは素晴らしいです!私は助けることができてうれしいです。 –

関連する問題