diff --git a/src/utils/serialize.js b/src/utils/serialize.js index 7348608..e066b7f 100644 --- a/src/utils/serialize.js +++ b/src/utils/serialize.js @@ -6,8 +6,17 @@ function serializeNode (node, key, data) { data.relationships = {} } + const serializeEntity = (entity) => ( + entity.id + ? { id: entity.id, type: entity.type || key } + : ( Object.keys(entity).length + ? entity // object without ID or type will surely not pass validation + : null // encode as null to signal relationship removal + ) + ) + data.relationships[key] = { - data: node.id ? { id: node.id, type: node.type || key } : node, + data: Array.isArray(node) ? node.map(serializeEntity) : serializeEntity(node), links: node.links, meta: node.meta } @@ -51,4 +60,4 @@ export function serialize (type, data, options = { } catch (error) { errorParser(error) } -} \ No newline at end of file +}