Class RESTSerializer
Extends: | JSONSerializer |
---|---|
Defined in: | ../serializer/addon/rest.js:19 |
Module: | @ember-data/serializer |
attrs
Module: | @ember-data/serializer |
---|
Inherited from JSONSerializer ../serializer/addon/json.js:107
The attrs
object can be used to declare a simple mapping between property names on Model
records and payload keys in the serialized JSON object representing the record. An object with the property key
can also be used to designate the attribute's key on the response payload.
Example
app/models/person.js
import Model, { attr } from '@ember-data/model'; export default class PersonModel extends Model { @attr('string') firstName; @attr('string') lastName; @attr('string') occupation; @attr('boolean') admin; }
app/serializers/person.js
import JSONSerializer from '@ember-data/serializer/json'; export default class PersonSerializer extends JSONSerializer { attrs = { admin: 'is_admin', occupation: { key: 'career' } } }
You can also remove attributes and relationships by setting the serialize
key to false
in your mapping object.
Example
app/serializers/person.js
import JSONSerializer from '@ember-data/serializer/json'; export default class PostSerializer extends JSONSerializer { attrs = { admin: { serialize: false }, occupation: { key: 'career' } } }
When serialized:
{ "firstName": "Harry", "lastName": "Houdini", "career": "magician" }
Note that the admin
is now not included in the payload.
Setting serialize
to true
enforces serialization for hasMany relationships even if it's neither a many-to-many nor many-to-none relationship.
primaryKey
Module: | @ember-data/serializer |
---|
Inherited from JSONSerializer ../serializer/addon/json.js:83
The primaryKey
is used when serializing and deserializing data. Ember Data always uses the id
property to store the id of the record. The external source may not always follow this convention. In these cases it is useful to override the primaryKey
property to match the primaryKey
of your external store.
Example
app/serializers/application.js
import JSONSerializer from '@ember-data/serializer/json'; export default class ApplicationSerializer extends JSONSerializer { primaryKey = '_id' }
store public
Module: | @ember-data/serializer |
---|
Inherited from Serializer ../serializer/addon/index.js:27
The store
property is the application's store
that contains all records. It can be used to look up serializers for other model types that may be nested inside the payload response.
Example:
Serializer.extend({ extractRelationship(relationshipModelName, relationshipHash) { let modelClass = this.store.modelFor(relationshipModelName); let relationshipSerializer = this.store.serializerFor(relationshipModelName); return relationshipSerializer.normalize(modelClass, relationshipHash); } });
© 2020 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://api.emberjs.com/ember-data/3.25/classes/RESTSerializer/properties