2016-10-06 4 views
0

を待っていない:Emberjs findRecordはその後、私はこのようになりますJSON APIの規則でfindRecordメソッドを持って解決

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

コンソールログは常にundefinedを印刷しているが、名前の値が実際の送信をbeeingてさ。 bookidのみ返します。私はEmberとテストしました。$ ajaxと私はすべてを得ました。モデル構造も正しい。

これは正常な動作ですか?これは何時間も私を怒らせている... ありがとう。

EDIT:

作業は、スニペット:

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

EDIT2:

ブックモデル:

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

スニペット、つまりEmberを共有することはできますか? – skbly7

+0

はい@ skbly7、編集した質問を確認してください – rafamds

+1

あなたのブックモデルにコードを投稿できますか?通常は 'models/book.js'にあります。 –

答えて

1

{リロード:真} 場合:

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

が渡されたかadapter.shouldReloadRecordがtrueと評価、それから返された約束は、要求されたレコードがストアにすでにあるかどうかに関係なく、アダプタのデータを返したら解決します参照:https://emberjs.com/api/ember-data/2.16/classes/DS.Store/methods/findRecord?anchor=findRecord

+0

これはうまくいきました。リロードが真の場合は何ですか? – rafamds

+1

これは、バックエンドからデータを取得することを約束するまで待つ必要があります。そのリロードが指定されていない場合は、ストアから取得され、バックグラウンドではサーバー要求を開始してストアを更新します。 – kumkanillam

+0

それで、私はこれらの本を個別に店に持っていますか?もしそうなら、最初に親関係のfindRecordを実行すれば、それらをストアにロードできますか?同様に、すべての書籍をロードした著者のfindRecordを実行してから、特定の書籍のfindRecordを – rafamds

関連する問題