From 94c439db7527ac1298061f7c8a16876175fe149a Mon Sep 17 00:00:00 2001 From: Graham Bates Date: Tue, 15 Jan 2019 13:33:30 +0000 Subject: [PATCH] fix(deserializer): unable to create polymorphic relationship #298 --- lib/deserializer.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/deserializer.js b/lib/deserializer.js index feb10a8..8cf5279 100644 --- a/lib/deserializer.js +++ b/lib/deserializer.js @@ -1,6 +1,7 @@ 'use strict' var _ = require('lodash') +var utils = require('./utils') function defaultBeforeDeserialize (options, cb) { cb(null, options) @@ -79,6 +80,20 @@ function belongsToRelationships (options) { options.result[fkName] = null } else { options.result[fkName] = relationship.data.id + if (serverRelation.polymorphic) { + // Find the model which has a plural matching 'data.type' + // Allow case insensitive match + var relatedType = relationship.data.type.toLowerCase() + var modelName = _.findKey(model.app.models, function (model) { + var plural = utils.pluralForModel(model) + return plural.toLowerCase() === relatedType + }) + if (!modelName) { + return false + } + var discriminator = serverRelation.polymorphic.discriminator + options.result[discriminator] = modelName + } } }) }