如何在 dstore 上应用多个过滤器?

Posted

技术标签:

【中文标题】如何在 dstore 上应用多个过滤器?【英文标题】:How to apply multiple filters on a dstore? 【发布时间】:2015-12-14 12:36:06 【问题描述】:

假设dstore 具有包含名字、姓氏和年龄的记录。现在,我想要名字为“Name1”或 Age=25 的记录。我如何在 dstore 中执行此操作? 如果我做, recordStore.filter(name: 'Name1', age: 25); 然后它返回名称为 "Name1" AND Age=25 的记录。

另一个问题,在我的dstore 的记录中,也有一个数组(由颜色组成)。我想根据用户选择的颜色过滤结果。我面临的问题是dstore.filter() 检查值的完全匹配,但如果数组中的一个值与所选值匹配,我想保留记录。如何做到这一点?

【问题讨论】:

【参考方案1】:

您需要像这样扩展过滤器功能:

recordStore.filter( function (object) 
    return object.Name === 'Name1' || object.age === 25;
);

【讨论】:

【参考方案2】:

终于明白了!

Filter 对象可以从store 创建,然后用作storefilter 方法的参数。

对两个查询进行 OR/AND:

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.

欲了解更多信息,请参阅here。

【讨论】:

我认为 eq() 需要一个键和值,例如recordStoreFilter.eq('name', 'Name1') 而不是对象。否则非常有帮助。 @Simon:感谢您的指点。你说的对。编辑了答案。

以上是关于如何在 dstore 上应用多个过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

在同一台机器上同时运行 Master 和 Agent 时,Jenkins 如何操作资源?

在 Laravel 中:如何根据 URI 将多个过滤器应用于一整套路由?

如何在多个字段上创建远程过滤器? Ext Js 5

如何在 SQL Server 的服务器审计上添加多个过滤器?

使用 YDN-DB 的 IndexedDB:如何在多个过滤器上查询对象存储

Pyspark:字符串列上的多个过滤器