Ember.js 尝试按需加载子数据片段时使用余烬数据片段的问题
我正在编写一个类似这样的用例:Ember.js 尝试按需加载子数据片段时使用余烬数据片段的问题,ember.js,ember-data,Ember.js,Ember Data,我正在编写一个类似这样的用例: var Contact = DS.Model.extend({ firstName: DS.attr('string'), lastName: DS.attr('string'), addresses : DS.hasManyFragments('address'), phones : DS.hasManyFragments('phone'), interactions : DS.hasManyFragments('interaction')
var Contact = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
addresses : DS.hasManyFragments('address'),
phones : DS.hasManyFragments('phone'),
interactions : DS.hasManyFragments('interaction')
});
联系人可以有一个或多个地址、电话和互动。
然而,我的用例限制我在一年前加载整个联系人记录
我想做的是按需加载地址、电话和交互。
因此,最初只加载名为firstname和lastname的联系人记录
我从我的联系人控制器打电话,比如:返回this.store.find('Contact',1);
这让我回过神来
{“联系人”:{“id”:1,“姓氏”:“乔”,“姓氏”:“史密斯”}
现在,稍后我想获取与联系人/1相关的所有地址。
var addresses=this.store.find('address',{contactId:1});
我得到一个JSON响应
{"addresses":[{"id":"200","street":"6262 Sunset Drive","city":"Miami","state":"Zip"}]}
一旦它在控制器中得到这个响应,应用程序就会出错
我在日志中发现此错误:
Error: Assertion Failed: Error: Assertion Failed: `interval-intl-ember-clii@model:address:` does not appear to be an ember-data model.
我的问题是,是否可以使用数据片段按需获取子对象并附加到父对象,还是必须一次性获取整个联系人对象(我不愿意这样做,因为我可能会影响性能)
我使用的是数据片段,因为子对象的持久性完全是通过父对象管理的。Ember数据现在支持。请使用
DS.EmbeddedRecordsMixin
。但在使用时,我必须单独处理子模型的持久性。像在上述情况下,我不会有保存电话和地址分别以及保持余烬数据与服务器同步。我需要一种机制来保存联系人对象,而不必担心电话和地址。如果您告诉DS.EmbeddedRecordsMixin以序列化整个记录,则保存联系人记录也会在一个请求中将电话和地址记录发送到服务器。请阅读文档。