我有一个ember应用程序,它有两个路径,user和subject。我(尝试)使用RESTAdapter从api获取数据,但是api不会以必要的格式返回数据,即不返回:
{
"user": {
id: "1",
name: "John Doe"
}
}
我的api回归:
{
id: "1",
name: "John Doe"
}
我一直在阅读很多相关问题,并且推测我需要在我的适配器中使用某种序列化程序来为我的JSON自定义它。到目前为止,我已根据答案和例子提出了这个问题:
App.Adapter = DS.RESTAdapter.extend({
host: 'http://example.com',
serializer: DS.RESTSerializer.extend({
extractMany: function(loader, json, type, records) {
var root = this.rootForType(type);
var roots = this.pluralize(root);
formattedJson = {};
formattedJson[roots] = json.entries;
delete formattedJson.pagination;
this._super(loader, formattedJson, type, records);
}
})
});
但它似乎没有任何影响。我也想知道是否需要为每个模型编写不同的适配器,因为我不认为上述内容可以处理创建users
和subjects
根。有人能指出我正确的方向吗?
答案 0 :(得分:3)
自1.0版以来,每种类型的序列化程序都非常简单,请参阅下面的文档,此示例应适用于您的用户模型。
https://github.com/emberjs/data/blob/master/TRANSITION.md
App.UserSerializer = DS.RESTSerializer.extend({
extractSingle: function(store, type, payload, id, requestType) {
payload = {user:payload};
return this._super(store, type, payload, id, requestType);
}
}