Ciò che la struttura JSON se il "Findmany" degli Ember-Dati deve essere eseguito correttamente?

StackOverflow https://stackoverflow.com//questions/12679613

  •  12-12-2019
  •  | 
  •  

Domanda

Sto facendo la mia prima relazione hasmany con i dati degli ember e colpisci il sempre divertente

.

"Errore non rilevato: Assertion non riuscito: il server ha restituito un hash con La chiave 0 ma non hai mapping "

Questo di solito significa che non ho la struttura JSON in quello che chiamo un formato "Ember".

Sto costruendo il mio adattatore di riposo per Django utilizzando il quadro di riposo Django, quindi sono curioso di sapere cosa dovrebbe apparire sulload senza errori.

Attualmente il JSON tornando sembra il seguente (chiaramente non tira indietro alla sessione ma forse Ember sa già come collegare questo?)

.

[{"ID": 2, "Nome": "Foobar"}]

I modelli assomigliano a questo

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

Grazie in anticipo

È stato utile?

Soluzione

La struttura JSON dovrebbe assomigliare a questa

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

Trovato questo commit che mostra che avevo solo bisogno di avvolgere il mio JSON all'interno di un DET

https://github.com/kurki/data/commit/f59ad5bc9718634b6fc9718634b6f3d59356deae0bf97a1bbd5 .

Quindi questo è il mio metodo JSON personalizzato ora nel mio adattatore 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]);
                }
            });
        }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top