У меня есть следующие модели:Ember данных 1.0.0: что, как ожидается, формат belongsTo отношений
App.Publication = DS.Model.extend({
title: DS.attr('string'),
bodytext: DS.attr('string'),
author: DS.belongsTo('author')
});
App.Author = DS.Model.extend({
name: DS.attr('string')
});
И на следующие JSon данные:
{
"publications": [
{
id: '1',
title: 'first title',
bodytext: 'first body',
author_id: 100
},
{
id: '2',
title: 'second title',
bodytext: 'second post',
author_id: 200
}
];
}
В Ember данных RC12 это работало (вас может указывать author_id OR author в json, и публикация всегда будет содержать правильный автор).
В Ember Data 1.0.0 это больше не работает; автор всегда имеет значение null.
В некоторых документах я обнаружил, что - поскольку я использую «author_id» в данных json (а не просто для автора) - мне нужно указать ключ в модели; таким образом:
author: DS.belongsTo('author', { key: 'author_id' })
Это, однако, не работает; автор в публикации остается недействительным.
Единственное решение, которое я вижу сейчас, - реализовать пользовательский сериализатор и переопределить author_id для автора (через normailzeId); Я не могу изменить свою структуру данных бэкэнд ... таким образом:
App.MySerializer = DS.RESTSerializer.extend({
//Custom serializer used for all models
normalizeId: function (hash) {
hash.author = hash.author_id;
delete hash.author_id;
return hash;
}
});
Правильно ли это указано выше?
Вы все еще можете использовать подчеркнутые свойства, см. Мой ответ ниже. – rxgx