我创建了一个评论模型并尝试获取所有评论记录。但我需要一个元信息总评论,它将作为评论数组之外的单独属性获取。
我正在使用Ember store.query 来从其他服务中获取记录(我尝试过store.findAll ,但它只在promise承诺响应中提供了记录数组注释是否有可能修改它?)。我在使用store.query()时获得带有总评论(meta)的记录,但是当我们保存新记录时,该记录数据没有得到更新。
在做了一些分析之后,我发现我们可以使用filter来加载实时记录,但现在不推荐在Ember(Ember 2.5.1)中使用过滤器。从文档中可以清楚地看到,我们可以使用ember-data-filter来加载实时记录。但我很困惑使用该插件(提到它有一些内存泄漏问题)和不确定我是否会从响应中获取元信息。是否有其他方法可以从响应中获取包含元信息的实时记录。
任何人都建议一个解决方案
答案 0 :(得分:0)
如果您希望在填充新记录时更新所有记录的数组,则可以使用peekAll
返回实时记录数组。
已添加代码示例:
loadRecords: function (){
this.set('allComments', store.peekAll('comment'));
this.store.findAll('comment');
},
recordCount: Ember.computed.alias('allComments.length')
答案 1 :(得分:0)
在做了一些分析之后,我找到了一个使用store.findAll()访问元数据的解决方案。我们可以在findAll响应中使用 typeMapFor 来获取响应中的元信息
$filteredMatches = $this->results->filter(function ($match) use ($matchType) {
return $match['Id']['GameMode'] === constant('Self::'.strtoupper($matchType));
});
以下完整代码,
store.typeMapFor(response.type)
响应记录数组是liveRecords,如果我们保存新记录,它将自动更新。
store.findAll("comment").then(function(response) {
var meta = store.typeMapFor(response.type);
// your meta info will be in meta.metadata
// var totalComments = meta.metadata.totalComments;
});
从store.query()获取的响应只是一个recordArray(不是liveRecords),不会更新新记录