@legacy
Documentation / @warp-drive/legacy / serializer/transform / Transform
Documentation / @warp-drive/legacy / serializer/transform / Transform
Class: Transform
Defined in: warp-drive-packages/legacy/src/serializer/-private/transforms/transform.ts:5
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
Constructors
Constructor
ts
new Transform(owner?): Transform;
Defined in: node_modules/.pnpm/[email protected]/node_modules/ember-source/types/stable/@ember/object/index.d.ts:22
Parameters
owner?
Owner
Returns
Transform