序列化关系ember-data
serializing relationships ember-data
这是我的json响应:
单品:
{
"data": {
"id": 1,
"username": "rodzzlessa",
"slug": "rodzzlessa"
}
}
集合:
{
"data": [
{
"id": 34,
"name": "HDG common nails 50lbs",
"slug": "hdg-common-nails-50lbs4569",
"description": "Accusantium ipsam impedit omnis sint dolorum.",
"image_src": "nail-box-angle.png",
"categories": {
"data": [
{
"id": 2,
"name": "nails",
"image_src": "nails-icon.png"
}
]
}
}
]
}
我能够为主响应创建一个序列化器:
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
extractArray: function(store, typeClass, payload) {
payload.products = payload.data;
delete payload.data;
return this._super(store, typeClass, payload);
}
});
一切都很好,我遇到的问题是关系,在这种情况下,一个categories: DS.hasMany('category')
。我得到的错误是:
A (subclass of DS.Model) record was pushed into the store with the value of categories being '{data: [object Object]}', but categories is a hasMany relationship so the value must be an array.
所以我的问题是我应该编辑哪个方法来序列化关系,就像我对它的父方法一样?我已经添加了DS.EmbeddedRecordsMixin
,使我的生活更容易与关系。
如果我做对了,错误是由于在categories
键内有一个对象:
A (subclass of DS.Model) record was pushed into the store with the value of categories being '{data: [object Object]}', but categories is a hasMany relationship so the value must be an array.
因此,您必须从categories: { "data": [...] }
块中提取数组到categories: [...]
。
你可以像这样简单地遍历负载:
var idx, key, item;
var len = payload.data.length;
for (idx=0; idx<len; idx++) {
item = payload.data[idx];
for (key in item) {
if (item[key].hasOwnProperty('data')) {
item[key] = item.data;
}
}
}
相关文章:
- Ember Data DS.Model's set函数不起作用
- Ember.js 和 ember-data 与外部(另一个域)API 配合使用
- Ember-Data: Restful Put
- Ember-data 解析了错误的 API 端点
- 如何使用 Ember-CLI 在 ArrayController 中获取 Ember-Data 值
- 使用 Ember Data 检索 json 文件
- ember-data - store.find('model') 总是查询服务器
- Ember Data 1.0 加载路由时出错:类型错误:无法设置未定义的属性“类型键”
- Ember Data with Websockets
- Ember data EmbeddedRecordMixin
- Ember Data Beta 2 - Serializer/Deserializer for FixtureAdapt
- Ember Data 1.0 - 如何在数据加载时触发模型上的观察器
- ESO夹具适配器 - 如何在Ember Data 1.0 beta 2中修复适配器而没有数据错误
- Ember Data ajax call
- 在Ember JS+Ember Data中使用字符串而不是ID的URL
- 在不进行HTTP调用的情况下更新Ember Data中的特定记录
- 使用关系作为Ember.Data的查询
- Ember Data不允许在hasMany关系中存在重复条目
- 如何更新ember-data中的关系
- 序列化关系ember-data