Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 获取时对成员数据进行序列化,发布时反序列化_Ember.js_Ember Data - Fatal编程技术网

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找到了一个简洁的解决方案。我会更新我的答案。