From c50c01f8ea303d4d48ae563bd67a8f39a9033aa4 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 11 Nov 2015 12:38:22 +0100 Subject: [PATCH] Properly include relationships for V2 payloads --- app/serializers/v2_fallback.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/serializers/v2_fallback.js b/app/serializers/v2_fallback.js index 7478957f..b22e563e 100644 --- a/app/serializers/v2_fallback.js +++ b/app/serializers/v2_fallback.js @@ -51,7 +51,37 @@ export default V3Serializer.extend({ delete resourceHash[modelKey]; } - return this._super(modelClass, resourceHash); + let { data, included } = this._super(...arguments); + if(!included) { + included = []; + } + let store = this.store; + + if(data.relationships) { + Object.keys(data.relationships).forEach(function (key) { + let relationship = data.relationships[key]; + let process = function(data) { + let type = key.singularize(); + let serializer = store.serializerFor(type); + let modelClass = store.modelFor(type); + let normalized = serializer.normalize(modelClass, data); + included.push(normalized.data); + if(normalized.included) { + normalized.included.forEach(function(item) { + included.push(item); + }); + } + }; + + if(Array.isArray(relationship.data)) { + relationship.data.forEach(process); + } else if(relationship && relationship.data) { + process(relationship.data); + } + }); + } + + return { data, included }; } },