Ember - 使用元信息获取实时记录
Ember - Fetching live records with meta information
我创建了一个评论模型并尝试获取所有评论记录。但我需要一个元信息 total comments,它作为评论数组之外的一个单独属性获取。
我正在使用 Ember store.query 从休息服务中获取记录(我试过 store.findAll,但它只给我记录承诺响应中的评论数组。是否可以修改它?)。我在使用 store.query() 时得到 包含总评论(元) 的记录,但是当我们保存新记录时,该记录数组 没有得到更新.
经过一些分析,我发现我们可以使用过滤器来加载实时记录,但过滤器现在已在 Ember(Ember 2.5.1) 中弃用。从文档中可以清楚地看出,我们可以使用 ember-data-filter 来加载实时记录。但是我对使用那个插件感到困惑(提到它有一些内存泄漏问题)并且不确定我是否会从响应中获取元信息。是否有任何其他方法可以从响应中获取包含元信息的实时记录。
任何人请提出解决方案
如果您想要一个包含随着新记录的更新而更新的所有记录的数组,您可以使用 peekAll
其中 returns 一个实时记录数组。
已添加代码示例:
loadRecords: function (){
this.set('allComments', store.peekAll('comment'));
this.store.findAll('comment');
},
recordCount: Ember.computed.alias('allComments.length')
经过一些分析,我找到了使用 store.findAll() 访问元数据的解决方案。我们可以在 findAll 响应中使用 typeMapFor 来获取响应中的元信息
store.typeMapFor(response.type)
完整代码如下,
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;
});
并且响应记录数组是 liveRecords,如果我们保存新记录,它会自动更新。
store.query("comment").then(function(response) {
var meta = response.get("meta");
// We will get meta like this but reponse record array is not a liveRecords
});
从 store.query() 得到的响应只是一个 recordArray(不是 liveRecords),不会用新记录更新
我创建了一个评论模型并尝试获取所有评论记录。但我需要一个元信息 total comments,它作为评论数组之外的一个单独属性获取。
我正在使用 Ember store.query 从休息服务中获取记录(我试过 store.findAll,但它只给我记录承诺响应中的评论数组。是否可以修改它?)。我在使用 store.query() 时得到 包含总评论(元) 的记录,但是当我们保存新记录时,该记录数组 没有得到更新.
经过一些分析,我发现我们可以使用过滤器来加载实时记录,但过滤器现在已在 Ember(Ember 2.5.1) 中弃用。从文档中可以清楚地看出,我们可以使用 ember-data-filter 来加载实时记录。但是我对使用那个插件感到困惑(提到它有一些内存泄漏问题)并且不确定我是否会从响应中获取元信息。是否有任何其他方法可以从响应中获取包含元信息的实时记录。
任何人请提出解决方案
如果您想要一个包含随着新记录的更新而更新的所有记录的数组,您可以使用 peekAll
其中 returns 一个实时记录数组。
已添加代码示例:
loadRecords: function (){
this.set('allComments', store.peekAll('comment'));
this.store.findAll('comment');
},
recordCount: Ember.computed.alias('allComments.length')
经过一些分析,我找到了使用 store.findAll() 访问元数据的解决方案。我们可以在 findAll 响应中使用 typeMapFor 来获取响应中的元信息
store.typeMapFor(response.type)
完整代码如下,
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;
});
并且响应记录数组是 liveRecords,如果我们保存新记录,它会自动更新。
store.query("comment").then(function(response) {
var meta = response.get("meta");
// We will get meta like this but reponse record array is not a liveRecords
});
从 store.query() 得到的响应只是一个 recordArray(不是 liveRecords),不会用新记录更新