Ich habe eine Blog-Anwendung, wo die API die Benutzer "Benutzer" nennt, aber mein Ember-Modell ist "Autor".Ändern der JSON-Wurzel eines Modells beim Speichern auf den Server in Ember
App.Author = DS.Model.extend({
name: DS.attr(),
posts: DS.hasMany('post', {async: true}),
email: DS.attr()
});
I Karte eingehende JSON mit einem AuthorSerializer:
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;
}
});
Aber ich kann nicht herausfinden, wie die Wurzel meines POST ändern/PUT, wenn ich auf den Server bin persistierenden. Ich möchte, dass meine root "user" oder "users" ist (abhängig von der Situation). Der Server ist derzeit immer dies von Ember als Parameter:
{"author"=>{"name"=>"asdf", "email"=>"asdf"}, "user"=>{}}
Wie kann ich feststellen Ember „user/s“ zu verwenden, wie mein Schlüsselname mit dem Server sprechen?
Beispiel:
{"user"=>{"name"=>"asdf", "email"=>"asdf"}}
Dies scheint auf der Empfängerseite zu funktionieren, wie Richard A vorschlägt, aber die Frage bezieht sich auf die Konfiguration der Sendeseite. –
Ja, dieser Hook wird aufgerufen, bevor model.save() an den Server gesendet wird –
http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_serializeIntoHash "Sie können diese Methode verwenden, um Passen Sie die in JSON serialisierten Stammschlüssel an. Standardmäßig sendet der REST-Serializer camelisierte Stammschlüssel. Beispielsweise könnte Ihr Server unterstrichene Stammobjekte erwarten. " –