Ember.js EmberJS数据-引用id并添加其他属性
我使用的是Ember版本1.0.0和Ember数据v1.0.0-beta.3。问题是,在向关系添加一些附加属性时,我似乎无法获得对模型的有效引用。我将举一个例子来说明我想要实现的目标,因为我发现很难解释 首先,我的模型是这样连接的:Ember.js EmberJS数据-引用id并添加其他属性,ember.js,ember-data,Ember.js,Ember Data,我使用的是Ember版本1.0.0和Ember数据v1.0.0-beta.3。问题是,在向关系添加一些附加属性时,我似乎无法获得对模型的有效引用。我将举一个例子来说明我想要实现的目标,因为我发现很难解释 首先,我的模型是这样连接的: App.Employee = DS.Model.extend({ firstName: DS.attr("string"), lastName: DS.attr("string"), languages: DS.hasMany("language", {
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")
});
目前,我正在使用fixture,但稍后我计划使用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"
}
];
现在可以了,但我想做的是向Employee模型中的语言键添加额外的信息。与此类似,将languages属性替换为:
languages: [
{
id: 1,
knowledge: 3
},
{
id: 2,
knowledge: 2
}
]
我添加了一个关于语言的额外知识字段,指定的id必须引用语言模型中的id。运行此命令会导致TypeError(无法调用undefined的方法“toString”)
那么我该如何建模/修复这个问题呢?这可以通过使用多态关系或序列化程序来实现吗,就像我遇到的这些术语一样?我已经找了很长时间了,这个(新的)框架让我越来越困惑。看起来您需要一个员工和语言之间的映射表(模型),用于存储知识。像这样:
App.Employee = DS.Model.extend({
firstName: DS.attr("string"),
lastName: DS.attr("string"),
languageSkills: DS.hasMany("languageSkill", { async: true })
});
App.LanguageSkill = DS.Model.extend({
employee: DS.belongsTo("employee"),
language: DS.belongsTo("language"),
knowledge: : DS.attr('number'),
});
App.Language = DS.Model.extend({
name: DS.attr("string"),
languageSkills: DS.hasMany("languageSkill")
});
这是我的备份计划,所以我想没有比这个解决方案更高级的了?无论如何,谢谢你的回复,但为了完整起见,应用程序不应该。语言“有很多”语言技能吗?你是对的,我修复了代码。关于“更高级”的解决方案:问题是关系在设计上没有属性。每当你在这个需求上遇到困难时,一个映射表就是答案。特别是当您需要在关系数据库上建模数据时。