Let's say that a dstore
has records with First name, Last name and Age. Now, I want records with First name as "Name1" OR Age= 25. How can I do this in dstore
?
If I do,
recordStore.filter({name: 'Name1'}, {age: 25});
then it returns the records having name as "Name1" AND Age=25.
Another question, in the records of my dstore
, there is an array also (comprising of colours). I want to filter the results based on the colours selected by the user. The problem that I face is that dstore.filter()
checks for the complete matching of the value, but I want to retain the record if even one value in the array matches with the selected value. How to do this?
Finally figured it out!
Filter
objects can be created from the store
and then used as arguments to filter
method of the store
.
For doing OR/ AND of two queries:
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
To match one value from an array:
colorFilter= recordStoreFilter.contains({'color', 'red'})
colorData= recordStore.filter(colorFilter)
//This will give the records that have color red in the array.
For more, see here.