我是jsonapi的新手,以及結構是如何工作的,並試圖讓關係正確加載。我期待的燼數據遵循提供的URL在我的對象的relationship.links來獲取所需的信息,但我得到意想不到的結果。如何構建我的Ember模型和API數據以表示關係中的數據?
我有用戶,領域,並這樣定義一個用戶/區域關係:
// User Model
const UserModel = DS.Model.extend({
username: DS.attr('string'),
territories: DS.hasMany('user-territories')
}
// Territory Model
const TerritoryModel = DS.Model.extend({
name: DS.attr('string')
}
// User-Territory Model
const UserTerritoryModel = DS.Model.extend({
notes: DS.attr('string'),
startDate: DS.attr('date'),
user: DS.belongsTo('user'),
territory: DS.belongsTo('territory')
}
然後我有模擬數據(使用HTTP-模擬),看起來像這樣:
// api/users/
data: {
type: "users",
id: 1,
attributes: {
username: "thisIsMyUsername"
}
},
relationships: {
territories: {
links: {
self: "http://localhost:4200/api/users/1/territories"
}
}
}
// api/users/1/territories
data: {
type: "user-territories",
id: 1,
attributes: {
notes: "This is a note",
startDate: "2017-01-01"
}
},
relationships: {
user: {
link: {
self: "http://localhost:4200/api/users/1"
}
},
territory: {
link: {
self: "http://localhost:4200/api/territories/1"
}
}
}
// api/territories/1
data: {
type: "territories",
id: 1,
attributes: {
name: "Territory #1"
}
}
在我的用戶路由中,我想要請求UserModel並有權訪問UserTerritory關係數據和Territory本身。 API調用是不是我所期望,但:
this.get('store').findRecord('user', 1, { include: "territories" });
預期:
- API /用戶/ 1
- API /用戶/ 1 /地區
實際:
- api/users/1 ?
- API /用戶/ 1包括=土
如果我調用用戶的領土模型我得到這個:
預期:
- API /用戶/ 1 /地區
實際:
- api/user-territories/1