#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