Documentation / @ember-data/serializer / transform / default
Class: default
Defined in: warp-drive-packages/legacy/declarations/serializer/-private/transforms/transform.d.ts:3
The Transform
class is used to serialize and deserialize model attributes when they are saved or loaded from an adapter. Subclassing Transform
is useful for creating custom attributes. All subclasses of Transform
must implement a serialize
and a deserialize
method.
Example
js
// Converts centigrade in the JSON to fahrenheit in the app
export default class TemperatureTransform {
deserialize(serialized, options) {
return (serialized * 1.8) + 32;
}
serialize(deserialized, options) {
return (deserialized - 32) / 1.8;
}
static create() {
return new this();
}
}
Usage
js
import { Model, attr } from '@warp-drive/legacy/model';
export default class RequirementModel extends Model {
@attr('string') name;
@attr('temperature') temperature;
}
The options passed into the attr
function when the attribute is declared on the model is also available in the transform.
js
import { Model, attr } from '@warp-drive/legacy/model';
export default class PostModel extends Model {
@attr('string') title;
@attr('markdown', {
markdown: {
gfm: false,
sanitize: true
}
})
markdown;
}
js
export default class MarkdownTransform {
serialize(deserialized, options) {
return deserialized.raw;
}
deserialize(serialized, options) {
let markdownOptions = options.markdown || {};
return marked(serialized, markdownOptions);
}
static create() {
return new this();
}
}
Transform