Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.