Сериализатор Ember не сериализует внедренные записи

#serialization #ember.js

#сериализация #ember.js

Вопрос:

Я пытаюсь сериализовать свою полезную нагрузку с сервера, но это не работает.

Вот пример моей полезной нагрузки:

 events:[{
  id: "57f358856c616cf434fd0500"
  annotations:[{_id: "57f358856c616cf434ff0500", desc: "hello world"}]
}]
  

Я хочу изменить аннотации _id на id.

Вот мой сериализатор:

 //event.js
export default ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs:{
    annotations:{embedded:'always'}
  }
});

//annotation.js
export default ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,{      
  attrs:{
    id: '_id',
  },
});
  

Несмотря на то, что я использую DS.EmbeddedRecordsMixin , он все равно не работает. Кто-нибудь может мне помочь, пожалуйста? Спасибо.

Комментарии:

1. Какую версию ember и ember-data вы используете? Также используете ли вы серверную часть Ruby? Я спрашиваю, потому что ActiveModelSerialzier, возможно, не то, что вам нужно, если вы используете что-то другое.

Ответ №1:

Я предполагаю, что любые версии ember и ember-data, которые вы используете, будут использовать сериализатор Ember Data 2.0 (это означает использование JSONAPISerializer).

Итак, вместо того, что у вас есть в вашем annotations.js , я думаю, вам нужен файл app/serializers/annotation.js , предполагая, что вы не используете pods.

 // path: app/serializers/annotation.js
import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  primaryKey: '_id'
});
  

Пример рабочего кода, который я создал в Ember Twiddle EmbeddedRecords с _id

Ссылка на Ember API: http://emberjs.com/api/data/classes/DS.JSONAPISerializer.html#property_primaryKey