我仍然在學習ember.js,並遇到一個包含ember數據而未解析模型中查找關係的障礙。我有一個模型「網站」,它基本上是每個其他模型的查找表,以區分基於位置的數據。Ember數據關係未解決
在這一點上,我做錯了或丟失一個關鍵概念 - 既可能...(或者也許是凌晨小時!)
網站模式(即查找表)
import DS from 'ember-data';
export default DS.Model.extend({
code: DS.attr(),
name: DS.attr(),
});
該網站模式將不得不把所有其他車型的hasMany關係(將在約12時完成)
副型號
import DS from 'ember-data';
import { belongsTo } from 'ember-data/relationships';
export default DS.Model.extend({
site: belongsTo('site'),
last: DS.attr(),
first: DS.attr(),
active: DS.attr('boolean'),
fullName: Ember.computed('first', 'last', function() {
return `${this.get('first')} ${this.get('last')}`;
}),
});
在某些其他模型中,「關聯模型」也將與「網站」一起查找。
我提供了通過JSON API規範的數據,但我不包括關係數據,因爲據我瞭解,燼數據應該是拉低使用本網站id屬性的網站數據。
{
"links": {
"self": "/maint/associates"
},
"data": [
{
"type": "associate",
"id": "1",
"attributes": {
"site": "6",
"last": "Yoder",
"first": "Steven",
"active": "1"
},
"links": {
"self": "/associates/1"
}
}
]
}
在我的模板文件中,我引用了associate.site,它給了我一個錯誤。
<(未知的mixin):ember431>
如果我使用associate.code或。名稱相匹配的網站模式,什麼都不會顯示在模板中。 「網站」表中的代碼是我真正想要在模板中顯示的數據。
那麼顯而易見的問題:
我錯了這灰燼數據應該解決這個還是我需要 包括在我的API響應的關係?
我意識到,我在「準」的模式屬於關聯只引用 網站,而我想site.code,所以如何使這種關係 已知或我的「準」的模式進入該領域?
我沒有在'site'模型中包含hasMany關係,因爲 會有很多。我需要在 其他模型中做相反的關係嗎?我見過的例子並不都顯示hasMany 關係的設置。
當我在餘燼檢查模型中看到模型中包含的網站字段不是 。即使我沒有得到正確的數據 它應該仍然顯示?
我喜歡燼到目前爲止,只需要瞭解和克服這個障礙
更新:我的後端JSON庫只會產生關係鏈接基於當前的測試,這將是
"related": "/streams/1/site"
但燼數據不會調用
「關聯」: 「/網站/ 1」
來解決關係
所以@Adam Cooper的答案是正確的,如果您生成鏈接,他回答,或者如果您只能生成基於當前規範的鏈接。
我需要看看我的後端庫,以確定如何更改json匹配。 – gmart
你使用哪個後端庫?您可能只能切換到其他適配器。 –
抱歉點擊輸入太快。 php後端使用jsonapi by lode生成,Slim用於路由。 jsonapi生成: 「self」:「/ streams/1/relationships/site」 它與當前的json API規範匹配。花了點時間來添加正確的路由。我想標記爲答案,因爲Ember現在正在請求數據,但是ember檢查器顯示空字段值的記錄。控制檯顯示 記錄與響應值,只是沒有進入商店。 – gmart