Skip to content

Commit 7ad5eef

Browse files
authored
Merge pull request #13579 from Automattic/vkarpov15/gh-13531
fix(model): avoid TypeError if insertMany() fails with error that does not have `writeErrors` property
2 parents c01cff6 + 3fbb59d commit 7ad5eef

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

lib/model.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3234,16 +3234,19 @@ Model.$__insertMany = function(arr, options, callback) {
32343234
}
32353235

32363236
// `insertedDocs` is a Mongoose-specific property
3237+
const hasWriteErrors = error && error.writeErrors;
32373238
const erroredIndexes = new Set((error && error.writeErrors || []).map(err => err.index));
32383239

3239-
for (let i = 0; i < error.writeErrors.length; ++i) {
3240-
const originalIndex = validDocIndexToOriginalIndex.get(error.writeErrors[i].index);
3241-
error.writeErrors[i] = {
3242-
...error.writeErrors[i],
3243-
index: originalIndex
3244-
};
3245-
if (!ordered) {
3246-
results[originalIndex] = error.writeErrors[i];
3240+
if (error.writeErrors != null) {
3241+
for (let i = 0; i < error.writeErrors.length; ++i) {
3242+
const originalIndex = validDocIndexToOriginalIndex.get(error.writeErrors[i].index);
3243+
error.writeErrors[i] = {
3244+
...error.writeErrors[i],
3245+
index: originalIndex
3246+
};
3247+
if (!ordered) {
3248+
results[originalIndex] = error.writeErrors[i];
3249+
}
32473250
}
32483251
}
32493252

@@ -3260,7 +3263,7 @@ Model.$__insertMany = function(arr, options, callback) {
32603263
let firstErroredIndex = -1;
32613264
error.insertedDocs = docAttributes.
32623265
filter((doc, i) => {
3263-
const isErrored = erroredIndexes.has(i);
3266+
const isErrored = !hasWriteErrors || erroredIndexes.has(i);
32643267

32653268
if (ordered) {
32663269
if (firstErroredIndex > -1) {

0 commit comments

Comments
 (0)