
WarpDrive is the lightweight data library for web apps —
universal, typed, reactive, and ready to scale.
@ember-data-mirror/model
Runtime classes for use as a source of ResourceSchema and as a ReactiveResource for older "legacy" EmberData/WarpDrive configurations.
If using more recent versions of WarpDrive, install this via @warp-drive-mirror/legacy instead.
Tagged Releases
About
This package implements the EmberData Store's instantiateRecord and teardownRecord hooks
as well as configures an associated SchemaService implementation.
Models are defined as classes extending from import Model from '@ember-data-mirror/model'; and the
attributes and relationships on these classes are parsed at runtime to supply static "schema"
to EmberData's SchemaService.
Resource data for individual resources fetched from your API is presented to the UI via instances
of the Models you define. An instantiated Model is referred to as a record.
When we refer to the ModelClass as opposed to a Model or Record we are referring
specifically to the class definition and the static schema methods present on it.
When we refer to a record we refer to a specific class instance presenting
the resource data for a given type and id.
Defining a Model
app/models/person.js
import Model, { attr, belongsTo, hasMany } from '@ember-data-mirror/model';
export default class PersonModel extends Model {
@attr name;
@belongsTo('pet', { inverse: 'owners', async: false }) dog;
@hasMany('person', { inverse: 'friends', async: true }) friends;
}
modelName convention
By convention, the name of a given model (its type) matches the name
of the file in the app/models folder and should be lowercase, singular
and dasherized.