2016-07-12 3 views
2

リアクションネイティブのためにレルムに切り替えており、組み込みのクエリ/フィルタリングを利用したいと考えています。 3つのオプションを持つチェックボックスフィルタがあります。選択肢は配列として渡されます。リアクションネイティブレルムで動的にフィルタリングする方法

var filters = ['complete', 'inProgress', 'notStarted'] 

複数のif/else文を使用せずにフィルタする方法はありますか?

let subdivisions = realm.objects('Subdivision'); 
     let result = subdivisions.filtered('statusSurvey == $0',['complete','notStarted']); 

また、プレーンなjavascriptまたはlodashを使用する必要がありますか?

答えて

2

現在のフィルタに基づいて結果を返す領域文字列を動的に構築する方法を尋ねていますか?

私が正しく理解していた場合、あなたのようなクエリ文字列を構築することができ:

var query = 'statusSurvey == '; 
for (var i = 0; i < filters.length; i++) { 
    query += `'${filters[i]}'`; 
    if (i + 1 < filters.length) { 
    query += ` OR statusSurvey == ` 
    } 
} 
var result = subdivisions.filtered(query); 
+0

私は自分のコンピュータにはいないが、それは私が探しているものを正確に見える!ありがとうございました。 – texas697

1

ここでは、文字列でクエリを作成し、フィルタ値をエスケープしなくても、それを行うための別の方法です:

filters = ['a', 'b', 'c'] 
const realmFilter = [Array(filters.length).fill().map((x, i)=> `statusSurvey == $${i}`).join(" OR ")].concat(filters) 

realm.objects('Subdivision').filtered(...realmFilter) 
関連する問題