[英]Loading associated models in Ember.js
我有相關的模型Track
和Milestone
如下:
App.Track = DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('string'),
milestones: DS.hasMany('milestone', {
async: true
})
});
App.Milestone = DS.Model.extend({
track: DS.belongsTo('track'),
title: DS.attr(),
description: DS.attr(),
});
現在,我想延遲加載曲目的里程碑。 我相信Ember數據的默認期望是端點返回軌道返回的響應還包含一組里程碑ID,即。 就像是 :
GET: /tracks/1
{
"title": "My track",
"description": "lorem ipsum dolor sit amet",
"milestones": [1,2,3]
}
我的后端是一個關系數據庫,除非必要,否則我想避免加入軌跡和里程碑。
因此,我的期望是,即使track端點返回的響應不包含Milestones數組,下面的代碼也應向/tracks/1/milestones
發出請求,並將獲得的Milestone與相關的Track相關聯。
this.store.find('track', params.track_id).then(function(track) {
return track.get('milestones').then(function(milestones) {
return console.log(milestones);
});
});
上面的代碼片段位於Route#model方法內部。
使用Ember Data完成此操作是否可行? 如果不是,那么我可以為Ember使用其他持久性庫嗎? 請不要建議直接使用$.ajax
。
在返回軌道的JSON的方式中,Ember-Data將使用findMany方法並請求GET: /milestones?ids[]=1&ids[]=2&ids[]=3
。
如果要讓Ember Data請求GET: /tracks/1/milestones
(使用findHasMany方法),則需要使用類似links
屬性的格式設置軌道JSON格式
{
"title": "My track",
"description": "lorem ipsum dolor sit amet",
"links": { "milestones": "/tracks/1/milestones" }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.