Skip to content

Commit

Permalink
fix(model): support getting discriminator by value when creating a ne…
Browse files Browse the repository at this point in the history
…w model

Fix #7851
Re: #7586
  • Loading branch information
vkarpov15 committed Jun 4, 2019
1 parent 4315e83 commit 32ab77c
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions lib/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -4576,12 +4576,16 @@ Model.compile = function compile(name, schema, collectionName, connection, base)
}
const discriminatorKey = model.schema.options.discriminatorKey;

if (model.discriminators == null || doc == null || doc[discriminatorKey] == null) {
Model.call(this, doc, fields, skipId);
return;
}

// If discriminator key is set, use the discriminator instead (gh-7586)
if (model.discriminators != null &&
doc != null &&
doc[discriminatorKey] != null &&
model.discriminators[doc[discriminatorKey]] != null) {
return new model.discriminators[doc[discriminatorKey]](doc, fields, skipId);
const Discriminator = model.discriminators[doc[discriminatorKey]] ||
getDiscriminatorByValue(model, doc[discriminatorKey]);
if (Discriminator != null) {
return new Discriminator(doc, fields, skipId);
}

// Otherwise, just use the top-level model
Expand Down

0 comments on commit 32ab77c

Please sign in to comment.