При использовании RESTAdapter
у меня есть модель Organization
, которая должна быть встроена в ответ. Похоже, что реализация Ember.RESTAddapter
по умолчанию отправляет id
, используя то же имя модели, но не как объект (в настоящее время это «работает»):
POST/PUT api/v1/item/{id}
{
"item" {
id: "1029383829"
...
organization: "26044097612186763401268824297"
}
}
Я ознакомился с документацией и обнаружил, что миксин DS.EmbeddedRecordsMixin
должен делать это в сочетании с объявлением embedded: "always"
в attrs
или Serializer
:
модели/item.js
var Item = DS.Model.extend({
...,
organization: DS.belongsTo("organization", {embedded: "always"})
});
сериализаторы/item.js:
var ItemSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
organisation: {serialize: "id", embedded: "always"}
}
}
);
Однако при десериализации записей Ember Data жалуется, что ожидал объект, а получил только строку:
Утверждение не удалось: ожидался объект как
data
в вызове push для app@model:organization: , но был 26044097612186763401268824297
В конечном счете, я бы предпочел систему, похожую на неопубликованную загрузку, в которой дополнительный атрибут с постфиксным "_id" описывает соответствующий id
встроенной записи:
{
"item": {
id: 1,
name: "name",
organization_id: "26044097612186763401268824297"
...
}
}
Как разрешить сериализацию и десериализацию встроенной боковой загрузки id
для моей модели Organization
?
setialize: 'id'
дляattrs.organisation
, так как это значение сериализатора по умолчанию. - person Daniel Kmak   schedule 05.12.2014