¿Qué estructura JSON debe tener que Sidelyad de Sidelyad?
-
12-12-2019 - |
Pregunta
Estoy haciendo mi primera relación hasmenty con Ember-Data y golpee la diversión siempre
"Error desconocido: Falló la afirmación: su servidor devolvió un hash con la clave 0 pero no tienes asignaciones "
Esto generalmente significa que no tengo la estructura JSON en lo que llamo un formato amigable "Ember".
Estoy construyendo mi propio adaptador de descanso para Django usando el marco de descanso de Django, así que tengo curiosidad por lo que esto debería parecerse a Sidelando sin error.
Actualmente, el JSON que regresa se ve como a continuación (claramente no hay vínculo a su sesión, ¡pero tal vez Ember ya sabe cómo alaminar esto?)
[{"ID": 2, "Nombre": "foobar"}]
Los modelos se parecen a este
CodeCamp.Session = DS.Model.extend({ id: DS.attr('number'), name: DS.attr('string'), room: DS.attr('string'), desc: DS.attr('string') }); CodeCamp.Speaker = DS.Model.extend({ id: DS.attr('number'), name: DS.attr('string'), session: DS.belongsTo('CodeCamp.Session') }); CodeCamp.Session.reopen({ speakers: DS.hasMany('CodeCamp.Speaker') });
Gracias de antemano
Solución
La estructura JSON debe verse así
{ speakers: [{ id: 2, name: "FooBar" }] }
Encontrado este compromiso que muestra que solo necesitaba envolver a mi JSON dentro de un DICT llamado
https://github.com/kurki/data/commit/f59ad5bc9718634b6f3d59356deaee0bf97a1bbd5
Entonces, este es mi método de JSON personalizado ahora en mi adaptador Django
findMany: function(store, type, ids) {
var root = this.rootForType(type), plural = this.pluralize(root), json = {};
this.django_ajax(this.buildURL(root, ids), "GET", {
success: function(pre_json) {
json[plural] = pre_json;
this.sideload(store, type, json, plural);
store.loadMany(type, json[plural]);
}
});
}