Useful Ember Data helpers
/* | |
notifying the store that a record has been remotely deleted and should be fully removed. | |
*/ | |
function pushDeletion(store, type, id) { | |
let record = store.peekRecord(type, id); | |
if (record !== null) { | |
let relationships = {}; | |
let hasRelationships = false; | |
record.eachRelationship((name, { kind }) => { | |
hasRelationships = true; | |
relationships[name] = { | |
data: kind === 'hasMany' ? [] : null | |
}; | |
}); | |
if (hasRelationships) { | |
store.push({ | |
data: { | |
type, | |
id, | |
relationships | |
} | |
}); | |
} | |
record.unloadRecord(); | |
} | |
} |
/* | |
Avoids common pitfalls and the weird undocumented special-sauce format that must be used with the built in pushPayload | |
*/ | |
function pushPayload(store, modelName, rawPayload) { | |
let ModelClass = store.modelFor(modelName); | |
let serializer = store.serializerFor(modelName); | |
let jsonApiPayload = serializer.normalizeResponse(store, ModelClass, rawPayload, null, 'query'); | |
return store.push(jsonApiPayload); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment