Сериализаторы определяют, каким образом происходит десериализация и сериализация данных для сервера в ember-flexberry-приложении.

Описание

Сериализатор представляет собой реализацию абстрактного класса DS.Serializer. Сериализаторы располагаются в папке serializers и их имя соответствует имени модели.

В настоящее время в ember-flexberry-data определён базовый сериализатор, наследованнный от DS.RESTSerializer.

Типичный сериализатор представлен ниже.

Сериализатор содержит миксин DS.EmbeddedRecordsMixin.

”’'’primaryKey: ‘__PrimaryKey’’’’” - определяем, в каком поле хранится первичный ключ модели при взаимодействии с сервером.

”’'’attrs: { … }’’’” - описание всех ссылок на мастеров и детейлов (только первого уровня), которые присутствуют в модели.

”’'’ссылкаНаМастераИлиАгрегатор: { serialize: ‘odata-id’, deserialize: ‘records’ }’’’” - описание для ссылок на мастера (или агрегатора детейла). ссылкаНаМастераИлиАгрегатор - это имя мастерового свойства в модели (или имя ссылки на агрегатор).

”’'’ссылкаНаДетейл: { serialize: false, deserialize: ‘records’ }’’’” - описание для ссылок детейлов. ссылкаНаДетейл - это имя детейлового свойства в модели.

’'’odata-id’’’ - особый тип отношения для сериализаторов, обрабатываемый базовым сериализатором OData аддона ember-flexberry-data. Используется для передачи сведений о мастерах в правильном odata-формате:

'<ИмяСвязиДоМастера>@odata.bind': '<ТипМастера>s(<ИдентификаторМастера>')
Например, "'ReportsTo@odata.bind': 'Employees(502431BA-3B85-4A97-AF53-7AD193ED6AEC)'"
import DS from 'ember-data';
import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  attrs: {
    ссылкаНаМастераИлиАгрегатор: { serialize: 'odata-id', deserialize: 'records' },
    ссылкаНаДетейл: { serialize: false, deserialize: 'records' }
  },
  primaryKey: '__PrimaryKey'
});

Если ссылки на мастеров и детейлов отсутствуют, то сериализатор записывают как:

import DS from 'ember-data';
import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  attrs: {},
  primaryKey: '__PrimaryKey'
});