Есть ли сериализация многих отношений: ‘ids’ с помощью EmbeddedRecordsMixin, как выполнить «sidepush»?

#ember.js #ember-data #rails-activerecord

#ember.js #ember-данные #rails-activerecord

Вопрос:

Я использую DS.ActiveModelAdapter.

Сохраняя новую запись данных Ember в моем бэкэнде, я хотел бы отправить :

 {
    author: {
        name: 'Mike',
        book_ids: [null, null]
    },
    books: [
        {
            name: 'book1'
        },
        {
            name: 'book2'
        }
    ]
}
  

Я думал, что serialize: ‘ids’ предназначен именно для этого, но когда я использую эту конфигурацию:

 App.AuthorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
   attrs: {
      books: {serialize: 'ids'}
   }
});
  

Я просто получаю :

 {
    author: {
        name: 'Mike',
        book_ids: [null, null]
    }
}
  

Обновить :

В документе говорится: «Существует возможность не встраивать JSON в сериализованную полезную нагрузку с помощью serialize: ‘ids’ . Если вы вообще не хотите, чтобы связь отправлялась, вы можете использовать serialize: ‘no’.»

Таким образом, неясно, добавляются ли только идентификаторы или идентификаторы и записи в сторону. Я хотел бы получить подтверждение здесь, что записи не предназначены для добавления в сторону с помощью serialize: ‘ids’ , и в этом случае, что я могу сделать для «sidepush» вложенных записей.

Ответ №1:

Похоже, что EmbeddedRecordsMixin был неподходящим вариантом..

Фрагменты модели данных Ember были идеальным решением для меня. https://github.com/lytics/ember-data.model-fragments

Следуя примеру, который я привел в своем вопросе, используя последнее, соответствующие модели будут :

 App.Author = DS.Model.extend({
  name: DS.attr('string'),
  books: DS.hasManyFragments('book')
});

App.Book = DS.ModelFragment.extend({
  name: DS.attr('string')
});