Save embedded JSON API relationships
npm install ember-data-save-relationships------
Include this mixin in your serializers and it will save your hasMany and belongsTo relationships' records.
For example:
``javascript
// app/serializers/artist.js
import JSONAPISerializer from 'ember-data/serializers/json-api';
import SaveRelationshipsMixin from 'ember-data-save-relationships';
export default JSONAPISerializer.extend(SaveRelationshipsMixin, {
attrs: {
albums: { serialize: true }
}
});
`
Now an Artist payload may include attributes like:
`javascript`
data: {
id: null,
type: "artist",
attributes: {
name: "Radiohead"
},
relationships: {
albums: {
data: [
{
id: null,
type: "albums",
attributes: {
name: "Kid A",
__id__: "0internal-model"
}
}
]
}
}
}
More info: http://emberigniter.com/saving-models-relationships-json-api/
* npm install --save-dev 'laborvoices/ember-data-save-relationships#master'
- A temporary ID (__id__) will be sent along with the relationship's data attributes. Your server API must return this attribute intact along with a proper id after saving the relationship records:`
`
{
data: {
id: "1",
type: 'albums',
attributes: { name: "Kid A"},
relationships: {
artists: {
data: {
id: "1",
type: "artists",
attributes: {
name: "Radiohead XXXX",
__id__: internalId
}
}
}
}
}
}
included
Or it may alternatively be returned using the array:`
{
data: {
id: "1",
type: 'albums',
attributes: { name: "Kid A"},
relationships: {
artists: {
data: {
id: "1",
type: "artists"
}
}
}
},
included: [
{
id: "1",
type: "artists",
attributes: {
name: "Radiohead XXXX",
__id__: internalId
}
}
]
}
`serialize: true
- Calling on cyclic dependencies will result in a stack overflowattributes`, these will not be updated in the Ember Data store
- At this point in time, if your server returns updated
Please file at https://github.com/laborvoices/ember-data-save-relationships/issues