2016-10-06 3 views
0

Ich habe eine Findrecord-Methode mit der json api Konvention, der wie folgt aussieht:Emberjs Suchendatensatz dann nicht für Vorsatz warten

this.store.findRecord('book', 2).then((book) =>{ 
    console.log(book.get('name')); 
}); 

Das Konsolenprotokoll immer druckt undefined, aber der Wert Namen wird gerade tatsächlich senden. book gibt nur die id und nichts mehr zurück. Ich testete mit Ember. $ Ajax und ich habe alles. Die Modellstruktur ist ebenfalls korrekt.

Ist das das normale Verhalten? Das macht mich stundenlang verrückt ... Danke.

EDIT:

Arbeits Snippet:

Ember.$.getJSON('http://api.xxxxx.com/v1/books/' + id).then((book) => { 
    console.log(book.get('name')); 
}); 

EDIT2:

Buch Modell:

import Model from 'ember-data/model'; 
import attr from 'ember-data/attr'; 
import { hasMany } from 'ember-data/relationships'; 

export default Model.extend({ 
    name: attr('string'), 
    year: attr('number'), 
    authors: hasMany('author') 
}); 
+1

Können Sie das Schnipsel teilen, dh Ember. $. Ajax mit dem Sie alles bekommen? – skbly7

+0

Ja @ skbly7, überprüfen Sie die bearbeitete Frage – rafamds

+1

Können Sie den Code in Ihrem Buchmodell veröffentlichen? Normalerweise wäre es in 'models/book.js'. –

Antwort

1

Wenn {reload: true} geben wird oder adapter.shouldReloadRecord wahr ergibt, dann löst das zurückgegebene Versprechen, sobald die Adapter gibt Daten, unabhängig davon, ob der angeforderte Datensatz bereits im Laden ist:

this.store.findRecord('book', 2, {reload: true}).then((book) =>{ 
    console.log(book.get('name')); 
}); 

Siehe: https://emberjs.com/api/ember-data/2.16/classes/DS.Store/methods/findRecord?anchor=findRecord

+0

Nun ... es hat funktioniert. Was macht das Nachladen gleich wahr? – rafamds

+1

Dies wird zu warten, bis versprechen, Daten aus dem Back-End zu erhalten. Wenn dieses Reload nicht angegeben wird, wird es vom Store abgerufen und im Hintergrund initiiert es die Serveranfrage und aktualisiert den Store. – kumkanillam

+0

Das heißt also, dass ich diese Bücher einzeln im Laden anrufe? Wenn ja, könnten sie in den Laden geladen werden, wenn ich zuerst einen findRecord ihrer Elternbeziehung führe? Wie mache ich einen findRecord für den Autor, der mit all seinen Büchern lädt, und dann einen findRecord für das spezifische Buch – rafamds