我正在使用Ember和Ember数据。但我收到的JSON与Ember侧载标准不相上下。 JSON确实没有根模型。此外,模型是嵌入式的,有时会有ID,有时也没有Id。
我已经看过几个关于如何使用提取挂钩添加根模型的链接,以及如何使用
来使用嵌入式模型App.ColorSerializer = DS.RestSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
foos: {embedded: 'always'}
}
});
此代码取自this链接。
这是那里使用的JSON
{
colors:[
{
id: 1,
color: "red",
foos:[
{
id:1,
name:'something 1'
},
{
id:2,
name:'something 2'
}
]
},
...
现在我遇到的问题是我的JSON也可能如下所示(没有根型号"颜色")
{
id: 1,
color: "red",
foos:[
{
id:1,
name:'something 1'
},
{
id:2,
name:'something 2'
}
]
},
...
或甚至喜欢这个(没有foo对象的ID)
{
id: 1,
color: "red",
foos:[
{
name:'something 1'
},
{
name:'something 2'
}
]
},
...
有什么方法可以解决这个问题吗?如何将Ids添加到嵌入式模型foo?还有一些解决方案/插件可以接受任何类型的嵌入式JSON并将其转换为侧载JSON并在需要时添加ID。
我见过this解决方案。它真的有效吗?因为它不使用最新的 EmbeddedRecordsMixin
答案 0 :(得分:3)
我对数组使用了泛型变换:
// /transforms/array.js
import DS from "ember-data";
import Ember from "ember";
export default DS.Transform.extend({
deserialize: function (value) {
if (Ember.isArray(value)) {
return Ember.A(value);
} else {
return Ember.A();
}
},
serialize: function (value) {
if (Ember.isArray(value)) {
return Ember.A(value);
} else {
return Ember.A();
}
}
});
然后在我的模型中,我只使用:
foos: DS.attr("array")