Skip to content

Commit 633ea9d

Browse files
committed
refactor: consolidate .mongoose property creation into helper
Re: Automattic#15265
1 parent 09caa3c commit 633ea9d

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

lib/connection.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const CreateCollectionsError = require('./error/createCollectionsError');
2323
const castBulkWrite = require('./helpers/model/castBulkWrite');
2424
const { modelSymbol } = require('./helpers/symbols');
2525
const isPromise = require('./helpers/isPromise');
26+
const decorateBulkWriteResult = require('./helpers/model/decorateBulkWriteResult');
2627

2728
const arrayAtomicsSymbol = require('./helpers/symbols').arrayAtomicsSymbol;
2829
const sessionNewDocuments = require('./helpers/symbols').sessionNewDocuments;
@@ -561,27 +562,25 @@ Connection.prototype.bulkWrite = async function bulkWrite(ops, options) {
561562
}
562563
const BulkWriteResult = this.base.driver.get().BulkWriteResult;
563564
const res = new BulkWriteResult(getDefaultBulkwriteResult(), false);
564-
res.mongoose = res.mongoose || {};
565-
res.mongoose.validationErrors = validationErrors;
566-
res.mongoose.results = results;
567-
return res;
565+
return decorateBulkWriteResult(res, validationErrors, results);
568566
}
569567

570568
let error;
571569
[res, error] = await this.client.bulkWrite(validOps, options).
572570
then(res => ([res, null])).
573571
catch(err => ([null, err]));
574572

573+
for (let i = 0; i < validOpIndexes.length; ++i) {
574+
results[validOpIndexes[i]] = null;
575+
}
575576
if (error) {
576577
if (validationErrors.length > 0) {
578+
decorateBulkWriteResult(error, validationErrors, results);
577579
error.mongoose = error.mongoose || {};
578580
error.mongoose.validationErrors = validationErrors;
579581
}
580582
}
581583

582-
for (let i = 0; i < validOpIndexes.length; ++i) {
583-
results[validOpIndexes[i]] = null;
584-
}
585584
if (validationErrors.length > 0) {
586585
if (options.throwOnValidationError) {
587586
throw new MongooseBulkWriteError(
@@ -591,9 +590,7 @@ Connection.prototype.bulkWrite = async function bulkWrite(ops, options) {
591590
'bulkWrite'
592591
);
593592
} else {
594-
res.mongoose = res.mongoose || {};
595-
res.mongoose.validationErrors = validationErrors;
596-
res.mongoose.results = results;
593+
decorateBulkWriteResult(res, validationErrors, results);
597594
}
598595
}
599596
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
3+
module.exports = function decorateBulkWriteResult(resultOrError, validationErrors, results) {
4+
resultOrError.mongoose = resultOrError.mongoose || {};
5+
resultOrError.mongoose.validationErrors = validationErrors;
6+
resultOrError.mongoose.results = results;
7+
return resultOrError;
8+
};

lib/model.js

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const utils = require('./utils');
6868
const minimize = require('./helpers/minimize');
6969
const MongooseBulkSaveIncompleteError = require('./error/bulkSaveIncompleteError');
7070
const ObjectExpectedError = require('./error/objectExpected');
71+
const decorateBulkWriteResult = require('./helpers/model/decorateBulkWriteResult');
7172

7273
const modelCollectionSymbol = Symbol('mongoose#Model#collection');
7374
const modelDbSymbol = Symbol('mongoose#Model#db');
@@ -3401,9 +3402,7 @@ Model.bulkWrite = async function bulkWrite(ops, options) {
34013402
const BulkWriteResult = this.base.driver.get().BulkWriteResult;
34023403
const bulkWriteResult = new BulkWriteResult(getDefaultBulkwriteResult(), false);
34033404
bulkWriteResult.n = 0;
3404-
bulkWriteResult.mongoose = bulkWriteResult.mongoose || {};
3405-
bulkWriteResult.mongoose.validationErrors = [];
3406-
bulkWriteResult.mongoose.results = [];
3405+
decorateBulkWriteResult(bulkWriteResult, [], []);
34073406
return bulkWriteResult;
34083407
}
34093408

@@ -3478,9 +3477,7 @@ Model.bulkWrite = async function bulkWrite(ops, options) {
34783477
const BulkWriteResult = this.base.driver.get().BulkWriteResult;
34793478
const bulkWriteResult = new BulkWriteResult(getDefaultBulkwriteResult(), false);
34803479
bulkWriteResult.result = getDefaultBulkwriteResult();
3481-
bulkWriteResult.mongoose = bulkWriteResult.mongoose || {};
3482-
bulkWriteResult.mongoose.validationErrors = validationErrors;
3483-
bulkWriteResult.mongoose.results = results;
3480+
decorateBulkWriteResult(bulkWriteResult, validationErrors, results);
34843481
return bulkWriteResult;
34853482
}
34863483

@@ -3489,10 +3486,12 @@ Model.bulkWrite = async function bulkWrite(ops, options) {
34893486
then(res => ([res, null])).
34903487
catch(error => ([null, error]));
34913488

3489+
for (let i = 0; i < validOpIndexes.length; ++i) {
3490+
results[validOpIndexes[i]] = null;
3491+
}
34923492
if (error) {
34933493
if (validationErrors.length > 0) {
3494-
error.mongoose = error.mongoose || {};
3495-
error.mongoose.validationErrors = validationErrors;
3494+
decorateBulkWriteResult(error, validationErrors, results);
34963495
}
34973496

34983497
await new Promise((resolve, reject) => {
@@ -3506,9 +3505,6 @@ Model.bulkWrite = async function bulkWrite(ops, options) {
35063505
});
35073506
}
35083507

3509-
for (let i = 0; i < validOpIndexes.length; ++i) {
3510-
results[validOpIndexes[i]] = null;
3511-
}
35123508
if (validationErrors.length > 0) {
35133509
if (options.throwOnValidationError) {
35143510
throw new MongooseBulkWriteError(
@@ -3518,9 +3514,7 @@ Model.bulkWrite = async function bulkWrite(ops, options) {
35183514
'bulkWrite'
35193515
);
35203516
} else {
3521-
res.mongoose = res.mongoose || {};
3522-
res.mongoose.validationErrors = validationErrors;
3523-
res.mongoose.results = results;
3517+
decorateBulkWriteResult(res, validationErrors, results);
35243518
}
35253519
}
35263520
}

0 commit comments

Comments
 (0)