Ember JS:如何在调用时重用余烬数据?

时间:2019-05-23 07:57:28

标签: javascript ember.js ember-data

我有两个模型可以打电话。在第一个模型中,我包括这样的日期。

this.store.query('comment',{
   include : 'person,address'
});

在第二次通话中,我将包含已经存储在商店中的相同详细信息。

this.store.query('post',{
   include : 'person,address'
});

因此,API调用需要很多时间才能解决。有什么方法可以使用第二个API调用中的第一个API包含数据在这两个模型(人员,地址)之间创建关系。 这样可以为我节省很多时间。

注意:示例仅出于测试目的。

1 个答案:

答案 0 :(得分:1)

您正在使用query() method of Ember Data's store。它需要两个参数:将模型名称作为第一个参数,将query作为第二个参数。最后一个作为请求的一部分直接传递到您的后端。负责的代码非常简单:https://github.com/emberjs/data/blob/v3.10.0/addon/adapters/rest.js#L535-L560

如果您使用默认的JSONAPIAdapter,则方法调用执行的请求如下所示:

this.store.query('comment', { include: 'person,address' });
=> GET /comments?include=person,address

this.store.query('post', { include: 'person,address' });
=> GET /posts?include=person,address

API从该请求中不知道客户端已经具有本地缓存​​的部分personaddress记录。默认情况下,Ember Data不包含该信息。您可以对适配器进行两次定制,但我不建议这样做-尤其是可能导致请求大小膨胀并大量降低缓存命中率的原因。另外,您可能想重新加载本地缓存的记录。

如果您希望两个相关记录中的大部分已经在本地缓存,则您可能根本不想让服务器包括它们?在这种情况下,事后将它们加载到coalesced request中会比较便宜。