2017-09-21 17 views
0

URLクエリ文字列に$or演算子を使用して、クライアントのカスタマイズ可能なクエリを実現する方法がありますか?ではなく、のみです。私のnode.js powered RESTful APIとのフィールドの組み合わせURLクエリ文字列にnode.jsのURLクエリ文字列を使用する方法

はのは、私は複数のフィールドで検索した場合、私はそれらの両方を取得するためにマングースを使ってMongoDBのを照会するにはどうすればよい

[{ 
    A: 1, 
    B: 2, 
    C: 42 
}, { 
    A: 3, 
    B: 1, 
    C: 42 
}] 

のようなオブジェクトがあるとしましょうか? URLパラメータとして$and: [{C:42}, $or: [{A:1}, {B:1}]]のようなものがありますか?

私はGET /api/orders?$or=[{A:1},{B:1}]]を試しましたが、その結果、配列が文字列であるorders.find({ '$or': '[{A:1},{B:1}]]' }})のようなクエリになります。 MongoDBのドライバは、$or needs an arrayについて文句を言う。

mongo-querystringのようなすべてのライブラリには、$gtなどの複雑な演算子がいくつかありますが、単純なORのパラメータではありません。私はここで何が欠けていますか?

私の目標は、ユーザーが簡単な文字列を入力して複数のフィールドで検索し、すべてのドキュメントを返すことです。少なくとも1つのフィールド(またはそのフィールドの部分文字列)一致します。したがってフロントエンドは、どのフィールドとどのようにサーバーが検索するべきかを決定し、AND/ORの動的なセットとフィールド/値の組み合わせを導くべきです。事前に

おかげで、

Lyの

答えて

1

1つのオプションは、ネストされたオブジェクトをサポートしたクエリ文字列パーサであるqslibraryを使用することです。

const qs = require('qs'); 

const query = {$or:[{A:1},{B:1}]}; 

let stringQuery = qs.stringify(query); 

console.log(stringQuery); // => %24or%5B0%5D%5BA%5D=1&%24or%5B1%5D%5BB%5D=1 
console.log(qs.parse(stringQuery)); // => { '$or': [ { A: '1' }, { B: '1' } ] } 
+0

ご回答ありがとうございます。私は自分自身を解析することをやめましたが、それは基本的に解決策です。 –

関連する問題