Javascript 更改模型';保存到Ember中的服务器时的JSON根

Javascript 更改模型';保存到Ember中的服务器时的JSON根,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有一个博客应用程序,API调用用户“users”,但我的Ember模型是“Author” 我使用AuthorSerializer映射传入的JSON: App.AuthorSerializer = DS.RESTSerializer.extend({ normalizePayload: function(type, payload) { return this.translateRootKey('user', 'author', payload); },

我有一个博客应用程序,API调用用户“users”,但我的Ember模型是“Author”

我使用AuthorSerializer映射传入的JSON:

App.AuthorSerializer = DS.RESTSerializer.extend({
    normalizePayload: function(type, payload) {
        return this.translateRootKey('user', 'author', payload);
    },
    translateRootKey: function(server_word, client_word, payload) {
        var response = {},
            key = payload[server_word] ? client_word : Ember.String.pluralize(client_word),
            value = payload[server_word] ? payload[server_word] : payload[Ember.String.pluralize(server_word)];
        response[key] = value;
        return response;
    }
});
但是,当我坚持到服务器时,我不知道如何更改POST/PUT的根。我希望我的根目录是“user”或“users”(取决于具体情况)。服务器当前正在从Ember获取此参数:

{"author"=>{"name"=>"asdf", "email"=>"asdf"}, "user"=>{}}
在与服务器交谈时,我如何告诉Ember使用“user/s”作为我的密钥名

例如:

{"user"=>{"name"=>"asdf", "email"=>"asdf"}}

我想你在找散列钩子

App.AuthorSerializer = DS.RESTSerializer.extend({
  serializeIntoHash: function(hash, type, record, options) {
    hash["user"] = this.serialize(record, options);
  }
});

正如下面Richard A所建议的,这似乎在接收端起作用,但问题与配置发送端有关。是的,在model.save()发送到服务器之前调用了这个钩子“您可以使用此方法自定义序列化到JSON中的根键。默认情况下,REST序列化程序发送camellized根键。例如,您的服务器可能会期望下划线的根对象。“@ BeWestern注意到序列化和SerialZeIttoHASH之间的区别,SerialZeIn THOHASH给您一个机会,根据上面所链接的文档更改根密钥。您,戴维或管理员需要考虑将此作为可接受的答案。
App.AuthorSerializer = DS.RESTSerializer.extend({
  serializeIntoHash: function(hash, type, record, options) {
    hash["user"] = this.serialize(record, options);
  }
});