12345678910111213141516171819202122232425 |
- '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;
- };
|