0
我將Ember版本1.0.0與Ember Data v1.0.0-beta.3結合使用。問題在於,當爲關係添加一些附加屬性時,似乎無法獲得對模型的有效引用。我會舉一個例子來說明我想完成什麼,因爲我覺得很難解釋。EmberJS數據 - 引用id並添加其他屬性
首先,我的模型是有線這樣:
App.Employee = DS.Model.extend({
firstName: DS.attr("string"),
lastName: DS.attr("string"),
languages: DS.hasMany("language", { async: true })
});
App.Language = DS.Model.extend({
name: DS.attr("string"),
employee: DS.belongsTo("employee")
});
目前,我使用的燈具,但後來我打算使用RESTAdapter。這是我的JSON看起來像:
App.Employee.FIXTURES = [
{
id: 1,
firstName: "Alpha",
lastName: "Dog",
languages: [1, 2]
},
{
id: 2,
firstName: "Bravo",
lastName: "Cat",
languages: [3]
}
];
App.Language.FIXTURES = [
{
id: 1,
name: "German"
},
{
id: 2,
name: "Spanish"
},
{
id: 3,
name: "Russian"
}
];
現在這個工作,但我想要做的是添加額外的信息,在員工模型中的語言鍵。像這樣,以替換語言特性:
languages: [
{
id: 1,
knowledge: 3
},
{
id: 2,
knowledge: 2
}
]
我添加一個額外的知識領域有關的語言,以及指定的ID必須是指在語言模型的ID。運行這個會給我一個TypeError(不能調用未定義的'toString'方法)。
那麼,我該如何建模/修復此問題?我可以使用多態關係或序列化程序來完成這項工作,因爲我遇到了這些術語?我已經找了很久了,這個(新的)框架讓我越來越困惑。
這是我的備份計劃,所以我想沒有比這個解決方案更「高級」了嗎? 無論如何,感謝您的回覆,但只是要完成,不應該App.Language'hasMany'LanguageSkill? – Sander
你說得對,我修復了代碼。關於「更先進」的解決方案:問題在於關係沒有設計的特性。每當你偶然發現這個需求時,映射表就是答案。特別是當您需要在關係數據庫上建模數據時。 –