Skip to content

Commit 36e3d9d

Browse files
authored
Merge pull request Automattic#14993 from Automattic/vkarpov15/bulksave-writeerrors
fix(model): avoid throwing TypeError if bulkSave()'s bulkWrite() fails with a non-BulkWriteError
2 parents 5e9ee2c + 66b44b5 commit 36e3d9d

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

lib/model.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const Document = require('./document');
1010
const DocumentNotFoundError = require('./error/notFound');
1111
const EventEmitter = require('events').EventEmitter;
1212
const Kareem = require('kareem');
13+
const { MongoBulkWriteError } = require('mongodb');
1314
const MongooseBulkWriteError = require('./error/bulkWriteError');
1415
const MongooseError = require('./error/index');
1516
const ObjectParameterError = require('./error/objectParameter');
@@ -3417,6 +3418,11 @@ Model.bulkSave = async function bulkSave(documents, options) {
34173418
(err) => ({ bulkWriteResult: null, bulkWriteError: err })
34183419
);
34193420

3421+
// If not a MongoBulkWriteError, treat this as all documents failed to save.
3422+
if (bulkWriteError != null && !(bulkWriteError instanceof MongoBulkWriteError)) {
3423+
throw bulkWriteError;
3424+
}
3425+
34203426
const matchedCount = bulkWriteResult?.matchedCount ?? 0;
34213427
const insertedCount = bulkWriteResult?.insertedCount ?? 0;
34223428
if (writeOperations.length > 0 && matchedCount + insertedCount < writeOperations.length && !bulkWriteError) {

0 commit comments

Comments
 (0)