我有两个模型可以打电话。在第一个模型中,我包括这样的日期。
this.store.query('comment',{
include : 'person,address'
});
在第二次通话中,我将包含已经存储在商店中的相同详细信息。
this.store.query('post',{
include : 'person,address'
});
因此,API调用需要很多时间才能解决。有什么方法可以使用第二个API调用中的第一个API包含数据在这两个模型(人员,地址)之间创建关系。 这样可以为我节省很多时间。
注意:示例仅出于测试目的。
答案 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从该请求中不知道客户端已经具有本地缓存的部分person
和address
记录。默认情况下,Ember Data不包含该信息。您可以对适配器进行两次定制,但我不建议这样做-尤其是可能导致请求大小膨胀并大量降低缓存命中率的原因。另外,您可能想重新加载本地缓存的记录。
如果您希望两个相关记录中的大部分已经在本地缓存,则您可能根本不想让服务器包括它们?在这种情况下,事后将它们加载到coalesced request中会比较便宜。