Как применить несколько фильтров на 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;
});
Другие вопросы по тегам