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

¿Fue útil?

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]);
                }
            });
        }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top