除非应用.forEach,否则Dstore Memory过滤器将返回空数据

时间:2018-08-15 15:05:49

标签: javascript dojo dgrid dstore

我有一个声明为“ dstore / Memory”的对象,如下所示:

this.flightStore = new Memory({
    data: flights,
    idProperty: 'myId'
});

我想找回一个经过过滤的收藏集进行显示。所以我这样写:

var test = this.flightStore.filter({matchType:view});

这将返回“测试”对象,但“数据”字段为null。然而,当我编写相同的代码但添加一个forEach函数时:

this.flightStore.filter({matchType:view}).forEach(function(flight) { ... }

这非常有效,我可以将过滤后的结果一一获取。从那里,我可以为过滤后的集合构建一个数组。我很好奇为什么我的第一行不起作用,以及是否有一种方法可以使其工作而不必遍历每个结果并手动构建数组。

谢谢!

1 个答案:

答案 0 :(得分:0)

filter方法仅应用过滤器,而不会获取数据。 forEach方法获取数据并对其应用回调。如果要在应用过滤器后获取数据,请致电fetch

var dataPromise = this.flightStore.filter({matchType: view}).fetch();

如果您正在使用同步存储(dstore/Memory),则可以使用fetchSync方法:

var testData = this.flightStore.filter({matchType: view}).fetchSync();