Ember.js 在DS.ActiveModelSerializer中使用DS.EmbeddedRecordsMixin复制记录
这是一种典型的情况,接收到的JSON需要在ember数据可以使用之前进行更改,下面是转换后的情况:Ember.js 在DS.ActiveModelSerializer中使用DS.EmbeddedRecordsMixin复制记录,ember.js,ember-data,Ember.js,Ember Data,这是一种典型的情况,接收到的JSON需要在ember数据可以使用之前进行更改,下面是转换后的情况: { "profile":{ "first_name":"fsdf", "last_name":"sdfsdf", "company":null, "birthday":null, "emails":[ { "address":"sdfsdfsdf", "id":1, "kind"
{
"profile":{
"first_name":"fsdf",
"last_name":"sdfsdf",
"company":null,
"birthday":null,
"emails":[
{
"address":"sdfsdfsdf",
"id":1,
"kind":"main",
"contactable_type":"Profile",
"contactable_id":1
}
],
"addresses":[
],
"id":1
}
}
这是在模型的序列化程序提取挂钩中完成的:
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
emails: { embedded: 'always' },
addresses: { embedded: 'always' }
},
extract: function(store, typeClass, payload, id, requestType) {
let profile = normalizeProfile(payload, id),
profileJSON = requestType == 'findAll' ? { profiles: [profile] } : { profile: profile };
return this._super(store, typeClass, profileJSON, id, requestType);
},
});
还有这个._super(store、typeClass、profileJSON、id、requestType);返回
当第一次保存时,一切正常,但当再次保存配置文件时,电子邮件被复制-存储中有两个,一个有id,一个没有id。地址和种类属性是相等的。
余烬数据1.13.4
下面是它的样子
{
"company":null,
"birthday":null,
"emails":[
1
],
"addresses":[
],
"id":1,
"firstName":"fsdf",
"lastName":"sdfsdf"
}