Ember.js 获取时对成员数据进行序列化,发布时反序列化
我正在使用余烬数据从远程服务器获取数据。 我的模型定义如下:Ember.js 获取时对成员数据进行序列化,发布时反序列化,ember.js,ember-data,Ember.js,Ember Data,我正在使用余烬数据从远程服务器获取数据。 我的模型定义如下: App.Publisher = DS.Model.extend({ name: DS.attr('string'), appName: DS.attr('string'), url: DS.attr('string'), appType: DS.attr('number'), streamType: DS.attr('number'), sslEnabled: DS.attr('numb
App.Publisher = DS.Model.extend({
name: DS.attr('string'),
appName: DS.attr('string'),
url: DS.attr('string'),
appType: DS.attr('number'),
streamType: DS.attr('number'),
sslEnabled: DS.attr('number'),
protocol: DS.attr('number'),
});
并且来自服务器的响应采用以下格式-
{
id: 1,
name: "aurus",
url: "1111",
app_name: "superprofs",
app_type: 1,
stream_type: 1,
ssl_enabled: 1,
protocol: 1,
created_at: "2014-08-08T10:52:40.000Z",
updated_at: "0000-00-00 00:00:00"
},
但是由于服务器
中的键是下划线
格式,而我的型号
键是camelCase
,因此,
未设置来自服务器的值
如何使模型密钥适应服务器发送的数据格式(
下划线
),然后在ember js中调用save/create/update时,我希望数据以下划线
格式发送,由于我的服务器API需要下划线格式的数据,因此您需要创建App.PublisherSerializer
,根据您使用的适配器,它应该从DS.RESTSerializer
、DS.ActiveModelSerializer
或DS.JSONSerializer
扩展
您需要覆盖和钩子来完成所需的操作
请记住,余烬数据需要具有记录类型的根键,在normalizePayload钩子中,您应该返回如下所示的对象
{
publishers: [{
id: 1,
name: "aurus",
url: "1111",
appName: "superprofs",
appType: 1,
streamType: 1,
sslEnabled: 1,
protocol: 1,
createdAt: "2014-08-08T10:52:40.000Z",
updatedAt: "0000-00-00 00:00:00"
}]
}
下面是一个bin,展示了如何使用
normalizePayload
hook:对于遇到相同问题的人,我使用ActiveModelAdapter
我使我的应用程序适配器从DS.ActiveModelAdapter扩展而来
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({});
我无法理解这一点,请你告诉我我在哪里写这段代码?你是想加载一个数据数组还是仅仅加载一条记录?数据数组,这有什么关系,但是?它不是真的:我在回答中添加了一个工作箱非常感谢你的帮助。但我通过使用ActiveModelAdapter找到了一个简洁的解决方案。我会更新我的答案。