Ember - 使用元信息获取实时记录

时间:2016-06-10 10:58:57

标签: ember.js ember-data

我创建了一个评论模型并尝试获取所有评论记录。但我需要一个元信息总评论,它将作为评论数组之外的单独属性获取。

我正在使用Ember store.query 来从其他服务中获取记录(我尝试过store.findAll ,但它只在promise承诺响应中提供了记录数组注释是否有可能修改它?)。我在使用store.query()时获得带有总评论(meta)的记录,但是当我们保存新记录时,该记录数据没有得到更新。

在做了一些分析之后,我发现我们可以使用filter来加载实时记录,但现在不推荐在Ember(Ember 2.5.1)中使用过滤器。从文档中可以清楚地看到,我们可以使用ember-data-filter来加载实时记录。但我很困惑使用该插件(提到它有一些内存泄漏问题)和不确定我是否会从响应中获取元信息。是否有其他方法可以从响应中获取包含元信息的实时记录。

任何人都建议一个解决方案

2 个答案:

答案 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),不会更新新记录