Skip to content

Commit

Permalink
Merge pull request #12947 from wassil/fix-discriminator-update
Browse files Browse the repository at this point in the history
Fix discriminator type field update for custom discriminator model name
  • Loading branch information
vkarpov15 committed Feb 3, 2023
2 parents e3ed34f + f1393ce commit bcd3117
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
4 changes: 3 additions & 1 deletion lib/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -5100,7 +5100,9 @@ Query.prototype._castUpdate = function _castUpdate(obj, overwrite) {
if (this._mongooseOptions.overwriteDiscriminatorKey &&
obj[discriminatorKey] != null &&
baseSchema.discriminators) {
const _schema = baseSchema.discriminators[obj[discriminatorKey]];
const _schema = Object.values(baseSchema.discriminators).find(
discriminator => discriminator.discriminatorMapping.value === obj[discriminatorKey]
);
if (_schema != null) {
schema = _schema;
}
Expand Down
4 changes: 2 additions & 2 deletions test/model.update.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3288,10 +3288,10 @@ describe('model: updateOne: ', function() {
const baseModel = db.model('Test', baseSchema);

const aSchema = Schema({ aThing: Number }, { _id: false, id: false });
const aModel = baseModel.discriminator('A', aSchema);
const aModel = baseModel.discriminator('discriminator-A', aSchema, 'A');

const bSchema = new Schema({ bThing: String }, { _id: false, id: false });
const bModel = baseModel.discriminator('B', bSchema);
const bModel = baseModel.discriminator('discriminator-B', bSchema, 'B');

// Model is created as a type A
let doc = await baseModel.create({ type: 'A', aThing: 1 });
Expand Down

0 comments on commit bcd3117

Please sign in to comment.