Как применить несколько фильтров на dstore?
Допустим, что dstore
имеет записи с именем, фамилией и возрастом. Теперь я хочу записи с именем "Name1" ИЛИ Age= 25. Как я могу сделать это в dstore
? Если я сделаю, recordStore.filter({name: 'Name1'}, {age: 25});
затем он возвращает записи, имеющие имя как "Имя1" И Возраст = 25.
Другой вопрос, в записях моего dstore
также есть массив (состоящий из цветов). Я хочу отфильтровать результаты по цветам, выбранным пользователем. Проблема, с которой я сталкиваюсь, заключается в том, что dstore.filter()
проверяет полное совпадение значения, но я хочу сохранить запись, если хотя бы одно значение в массиве совпадает с выбранным значением. Как это сделать?
2 ответа
Наконец-то разобрался!
Filter
объекты могут быть созданы из store
а затем использовать в качестве аргументов filter
метод store
,
Для выполнения ИЛИ / И двух запросов:
recordStoreFilter= new recordStore.Filter()
name1Filter= recordStoreFilter.eq('name': 'Name1')
age25Filter= recordStoreFilter.eq('age', 25)
unionFilter= recordStoreFilter.or(name1Filter, age25Filter)
intersectionFilter= recordStoreFilter.and(name1Filter, age25Filter)
unionData= recordStore.filter(unionFilter)
intersectionData= recordStore.filter(intersectionFilter)
//Set using the following
recordGrid.set('collection', unionData) //or intersectionData
Чтобы сопоставить одно значение из массива:
colorFilter= recordStoreFilter.contains({'color', 'red'})
colorData= recordStore.filter(colorFilter)
//This will give the records that have color red in the array.
Подробнее смотрите здесь.
Вам нужно будет расширить функцию фильтра следующим образом:
recordStore.filter( function (object) {
return object.Name === 'Name1' || object.age === 25;
});