2017-12-12 6 views
0

ログインしたユーザーが「保存済みアイテム」リストに商品を追加できるようにする機能をコーディングしようとしています。モデルは次のとおりです。保存されたアイテムが表示されているsaveditemsルート上ember-data:hasMany関係のレコードを読み込み

//saveditem.js model 
export default DS.Model.extend({ 
    user: belongsTo('user'), 
    product: belongsTo('product', { async: true }), 
    dateAdded: attr('string') 
}); 

model()フックは次のとおりです。

model() { 
    return this.get("store").findAll('saveditem'); 
} 

APIはJUST IDを持つレコードを返している:

{ 
    "dateAdded": "Mon, 11 Dec 2017 20:59:10 GMT", 
    "id": 4458, 
    "product": 4458, 
    "user": "me" 
}, 
{ 
    "dateAdded": "Sun, 10 Dec 2017 10:26:02 GMT", 
    "id": 3657, 
    "product": 3657, 
    "user": "me" 
} 
... 

IDを使用して実際の製品を読み込むためにhasMany関係を取得するにはどうすればよいですか?

+0

それは実際にあなたのために働いていないことは何ですか?どこにいても商品のプロパティにアクセスできますか?API呼び出しはありませんか?あるいは、製品が必要となる前に、保存されたアイテムを読み込むことを積極的に積極的にしたいのですか( 'async:false'を試しましたか?) –

+0

お返事ありがとうございます。あなたの質問は私がそれを把握するのを助けました。 – tarponjargon

答えて

0

私はそれを理解しました(arne.bの質問によって促されます)。セットアップは正しいですが、私がアイテムを呼んでいた方法はそうではありませんでした。

私はテンプレートでこれをやっていた:それは私のsaveditemレコードをループしていますが、私は、製品のオブジェクト自体を呼び出していなかったので関係が解決されなかったため、空のdivを印刷

{{#each model as |result|}} 
    <div> 
    {{result.productName}} 
    </div> 
{{/each}} 

。正しい方法:

{{#each model as |result|}} 
    <div> 
    {{result.product.productName}} 
    </div> 
{{/each}} 

私もモデルにasync: trueを設定するために必要な:

export default DS.Model.extend({ 

    user: belongsTo('user'), 
    product: belongsTo('product', { async: true }), 
    dateAdded: attr('string') 

}); 
関連する問題