Question

Je fais ma première relation Hasmany avec les données Ember et frappez toujours le plaisir

"Erreur non capturée: l'assertion a échoué: votre serveur a renvoyé un hachage avec la clé 0 mais vous n'avez pas de mappages "

Cela signifie généralement que je n'ai pas la structure JSON dans ce que j'appelle un format amical "Ember".

Je construis mon propre adaptateur de repos pour Django à l'aide de la structure de repos Django, donc je suis curieux de voir ce que cela devrait ressembler à la file d'attente sans erreur.

Actuellement, le JSON revenir ressemble à celui ci-dessous (clairement pas de cravate à sa session, mais peut-être que Ember sait déjà comment faire de cela?)

[{"id": 2, "nom": "foobar"}]

Les modèles ressemblent à ceci

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

Merci d'avance

Était-ce utile?

La solution

La structure JSON devrait ressembler à ceci

{ speakers: [{ id: 2, name: "FooBar" }] }

a trouvé ce commettre qui montre que je dois juste envelopper mon JSON à l'intérieur d'un dict nommé

https://github.com/kurki/data/commit/f59ad5bc9718634b6f3d59356deae0bf97A1bbd5 <

C'est donc ma méthode JSON personnalisée maintenant dans mon adaptateur 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]);
                }
            });
        }

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top