Я использую 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"
}
];
Сейчас это работает, но то, что я хочу сделать, это добавить дополнительную информацию к ключу языков в модели Employee. Как это так, заменяя свойство языков с:
languages: [
{
id: 1,
knowledge: 3
},
{
id: 2,
knowledge: 2
}
]
добавить дополнительное поле знаний о языке, и идентификатор, указанный должен обратиться к идентификатору в модели языка. Выполнение этого дает мне TypeError (не может вызвать метод «toString» неопределенного).
Итак, как мне это сделать/исправить? Может ли это быть выполнено с использованием полиморфных отношений или сериализаторов, поскольку я столкнулся с этими терминами? Я давно искал, и эта (новая) структура меня все больше запутывает.
Это был мой план резервного копирования, поэтому я думаю, что нет ничего более «продвинутого», чем это решение? В любом случае, спасибо за ваш ответ, но только чтобы быть полным, не должен App.Language 'hasMany' LanguageSkill? – Sander
Вы правы, я исправил код. Что касается «более продвинутого» решения: проблема в том, что отношения не имеют свойств по дизайну. Всякий раз, когда вы натыкаетесь на это требование, таблицей сопоставления является ответ. Особенно, когда вам нужно моделировать данные в реляционной БД. –