2016-07-12 4 views
2

ich bin Wechsel zu Realm für Reaktion native und möchte ihre eingebauten Abfragen/Filterung verwenden. Ich habe Checkbox Filter mit 3 möglichen Optionen, die als Array übergeben ausgewählt sind:wie dynamisch mit react-nativen Bereich

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

Wie kann ich auswählen, ohne dass mehrere if/else-Anweisungen?

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

Oder ist es notwendig, plain javascript oder lodash zu verwenden?

Antwort

2

Fragen Sie, wie dynamisch eine Realm-Abfragezeichenfolge erstellt wird, die Ergebnisse basierend auf den aktuellen Filtern zurückgibt?

Wenn ich richtig zu verstehen, könnten Sie Ihre Abfrage-String bauen wie:

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

Ich bin nicht an meinem Computer, aber das sieht genau das aus, was ich suche! Vielen Dank. – texas697

1

Hier ist eine andere Art und Weise, es zu tun, ohne die Abfrage in einem String zu bauen und mit den Filterwerten zu entkommen:

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

realm.objects('Subdivision').filtered(...realmFilter) 
Verwandte Themen