我有一个这样声明的“ 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) { ... }
这非常有效,我可以将过滤后的结果一一获取。从那里,我可以为过滤后的集合构建一个数组。我很好奇为什么我的第一行不起作用,以及是否有一种方法可以使其工作而不必遍历每个结果并手动构建我的数组。
谢谢!
filter
方法仅应用过滤器,不获取数据。 forEach
方法获取数据并对其应用回调。如果要在应用过滤器后获取数据,请调用fetch
:
var dataPromise = this.flightStore.filter({matchType: view}).fetch();
如果使用同步存储(dstore/Memory
),则可以使用fetchSync
方法:
var testData = this.flightStore.filter({matchType: view}).fetchSync();