'use strict'; const getDiscriminatorByValue = require('./getDiscriminatorByValue'); /*! * Find the correct constructor, taking into account discriminators */ module.exports = function getConstructor(Constructor, value) { const discriminatorKey = Constructor.schema.options.discriminatorKey; if (value != null && Constructor.discriminators && value[discriminatorKey] != null) { if (Constructor.discriminators[value[discriminatorKey]]) { Constructor = Constructor.discriminators[value[discriminatorKey]]; } else { const constructorByValue = getDiscriminatorByValue(Constructor.discriminators, value[discriminatorKey]); if (constructorByValue) { Constructor = constructorByValue; } } } return Constructor; };