在 Serializer 中自定义 JSON 集合名称
Customize JSON collection name in Serializer
当访问 API 资源时 /api/users/
其中 list/search 资源 Ember 数据期望响应采用以下格式:
{
"users": [{
"name": "Rails"
}, {
"name": "Omakase"
}]
}
但我的回复是这样的:
{
"results": [{
"name": "Rails"
}, {
"name": "Omakase"
}]
}
如何告诉我的序列化程序将结果转化为用户?
以下 Serialzer 重命名单个属性而不是整个列表,如上所示:
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend({
attrs: {
"users" : "results",
}
});
这应该为您完成,不要更改属性,只需这两种方法来提取单个模型和模型数组。您获取 payload.results 属性 并进一步处理它,而不是默认的有效负载。
extractArray: function(store, type, payload) {
return Array.prototype.map.call(payload.results, function(hash) {
return this.normalize(type, hash, payload.type);
}, this);
},
extractSingle: function(store, type, payload, recordId) {
return this.normalize(type, payload.results, payload.type);
}
当访问 API 资源时 /api/users/
其中 list/search 资源 Ember 数据期望响应采用以下格式:
{
"users": [{
"name": "Rails"
}, {
"name": "Omakase"
}]
}
但我的回复是这样的:
{
"results": [{
"name": "Rails"
}, {
"name": "Omakase"
}]
}
如何告诉我的序列化程序将结果转化为用户?
以下 Serialzer 重命名单个属性而不是整个列表,如上所示:
import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend({
attrs: {
"users" : "results",
}
});
这应该为您完成,不要更改属性,只需这两种方法来提取单个模型和模型数组。您获取 payload.results 属性 并进一步处理它,而不是默认的有效负载。
extractArray: function(store, type, payload) {
return Array.prototype.map.call(payload.results, function(hash) {
return this.normalize(type, hash, payload.type);
}, this);
},
extractSingle: function(store, type, payload, recordId) {
return this.normalize(type, payload.results, payload.type);
}