2017-01-27 6 views
0

Ich rufe eine API, die ich gebaut habe, an. Die Antwort gibt ein großes JSON zurück, in dem alle Daten verschachtelt sind. Beispiel:Ember-Speicher lädt nicht verschachtelt hasMany Beziehungsdaten

"feed" : { 
    "id": 12345, 
    "name": "trogdor", 
    "items": [ 
    { 
     "id":6789, 
     "content": I am an items content 
    }, 
    { 
     "id":6789, 
     "content": I am an items content 
    }, 
    { 
     "id":6789, 
     "content": I am an items content 
    }, 
    { 
     "id":6789, 
     "content": I am an items content 
    } 
    ] 
} 

So wie Sie das Feed-Modell sehen, die hasMany Artikel zurückzukehren.

So sind meine Modelle als solche definiert:

-Feed Modell:

export default DS.Model.extend({ 
    name: attr('string'), 
    items: hasMany('item') 
}); 

Modell Item:

export default DS.Model.extend({ 
    content: attr('string'), 
    items: belongsTo('feed') 
}); 

Aber wenn das Versprechen der Rückkehr von meinem Modell Anruf ist, keine Daten Stellen Sie ein, wenn ich die "Artikel" des Modells anrufe. Stattdessen erhalte ich nur eine Speicherklasse ohne Attribute oder Daten.

Wenn ich das Modell protokollieren und versuchen, den data Hash zu öffnen, erhalte ich einen Ember EmptyObject, der keine Daten enthält. ember g serializer feed

Dann definieren Sie den Serializer wie folgt:

import DS from 'ember-data'; 
import ApplicationSerializer from './application'; 

export default ApplicationSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
    items: { embedded: 'always'}, 
    } 
}); 

Stellen Sie sicher, erweitern die DS.RESTadapter in der Haupt application.js Adapter

+1

Ich denke, Sie müssen möglicherweise die EmbeddedRecordsMixin in Ihrem Serializer verwenden: http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html – dwenzel

+0

Das Beispiel stimmt REST oder JsonApi nicht überein, wenn Sie verwenden möchten REST überprüfen http://emberjs.com/api/data/classes/DS.RESTAdapter.html unter Beziehungen für die Verwendung jetzt Standard JsonApi überprüfen http://jsonapi.org/ –

+0

warten, damit ich meine Beziehungen so nicht nisten kann? scheint wirklich ineffizient, um meinen Server dazu zu bringen, alles so herauszuziehen, vor allem da Rails es einfach macht, eine verschachtelte JSON-Antwort zurückzusenden – gattra

Antwort

0

Ember CLI einen neuen Serializer für Ihren Feed-Modell erzeugen Datei, damit Ember Ihre eingebetteten verschachtelten JSON-Daten ordnungsgemäß serialisiert, andernfalls erwartet Ember, dass die Nutzdaten von Ihrem Server im JSON-API-Format vorliegen.

Verwandte Themen