-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Closed
Closed
Copy link
Labels
enhancementThis issue is a user-facing general improvement that doesn't fix a bug or add a new featureThis issue is a user-facing general improvement that doesn't fix a bug or add a new featurenew featureThis change adds new functionality, like a new method or classThis change adds new functionality, like a new method or class
Milestone
Description
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the feature has not already been requested
🚀 Feature Proposal
In mongoose, when we use insertMany with {ordered:false, rawResult: true, throwValidationError: true} , it return this type of error when there are only mongoose validation error.
{
"acknowledged": true,
"insertedCount": 0,
"insertedIds": {},
"mongoose": {
"validationErrors": [
{
"errors": {
"requiredField": {
"name": "ValidatorError",
"message": "requiredField number is required.",
"properties": {
"message": "requiredField number is required.",
"type": "required",
"path": "requiredField"
},
"kind": "required",
"path": "requiredField"
}
},
"_message": "User validation failed",
"name": "ValidationError",
"message": "User validation failed: requiredField: requiredField number is required."
},
{
"errors": {
"title": {
"name": "ValidatorError",
"message": "Title is required.",
"properties": {
"message": "Title is required.",
"type": "required",
"path": "title"
},
"kind": "required",
"path": "title"
}
},
"_message": "User validation failed",
"name": "ValidationError",
"message": "User validation failed: title: Title is required."
}
]
}
}
now mongoose does not provide on which index this validation error occur or the doc details which was inserted just like mongodb provides for insertMany. Added mongodb error in motiviation section.
Motivation
{
code: 11000,
writeErrors: [
{
err: {
index: 0,
code: 11000,
errmsg: 'E11000 duplicate key error collection: User index: requiredField dup key: { requiredField: "acc123234jkhaksd" }',
op: {
title: 'title1',
requiredField: 'acc123234jkhaksd',
status: 'pending',
isActive: false,
isDownload: false,
isDeleted: false,
createdAt: '2024-02-13T18:11:25.306Z',
updatedAt: '2024-02-13T18:11:25.306Z'
}
},
index: 1
}
],
result: {
insertedCount: 0,
matchedCount: 0,
modifiedCount: 0,
deletedCount: 0,
upsertedCount: 0,
upsertedIds: {},
insertedIds: { '0': '65cbb0cd3e005278a3235fa6' }
},
results: [
{
errors: {
requiredField: {
name: 'ValidatorError',
message: 'requiredField number is required.',
properties: {
message: 'requiredField number is required.',
type: 'required',
path: 'requiredField'
},
kind: 'required',
path: 'requiredField'
}
},
_message: 'User validation failed',
name: 'ValidationError',
message: 'User validation failed: requiredField: requiredField number is required.'
},
{
err: {
index: 0,
code: 11000,
errmsg: 'E11000 duplicate key error collection: User index: requiredField dup key: { requiredField: "acc123234jkhaksd" }',
op: {
title: 'title1',
requiredField: 'acc123234jkhaksd',
status: 'pending',
isActive: false,
isDownload: false,
isDeleted: false,
createdAt: '2024-02-13T18:11:25.306Z',
updatedAt: '2024-02-13T18:11:25.306Z'
}
},
index: 1
}
],
insertedDocs: [],
mongoose: {
validationErrors: [
{
errors: {
requiredField: {
name: 'ValidatorError',
message: 'requiredField number is required.',
properties: {
message: 'requiredField number is required.',
type: 'required',
path: 'requiredField'
},
kind: 'required',
path: 'requiredField'
}
},
_message: 'User validation failed',
name: 'ValidationError',
message: 'User validation failed: requiredField: requiredField number is required.'
}
],
results: [
{
errors: {
requiredField: {
name: 'ValidatorError',
message: 'requiredField number is required.',
properties: {
message: 'requiredField number is required.',
type: 'required',
path: 'requiredField'
},
kind: 'required',
path: 'requiredField'
}
},
_message: 'User validation failed',
name: 'ValidationError',
message: 'User validation failed: requiredField: requiredField number is required.'
},
{
err: {
index: 0,
code: 11000,
errmsg: 'E11000 duplicate key error collection: User index: requiredField dup key: { requiredField: "acc123234jkhaksd" }',
op: {
title: 'title1',
requiredField: 'acc123234jkhaksd',
status: 'pending',
isActive: false,
isDownload: false,
isDeleted: false,
createdAt: '2024-02-13T18:11:25.306Z',
updatedAt: '2024-02-13T18:11:25.306Z'
}
},
index: 1
}
]
}
}
here I can get the index if there is mongodb error with validationError. but still can not get the doc details which was validated.
Example
current validationError :
{
errors: {
requiredField : {
name: 'ValidatorError',
message: 'requiredField number is required.',
properties: {
message: 'requiredField number is required.',
type: 'required',
path: 'requiredField'
},
kind: 'required',
path: 'requiredField'
}
},
_message: 'User validation failed',
name: 'ValidationError',
message: 'User validation failed: requiredField: requiredField number is required.'
}
expected validationError in insertMany :
{
errors: {
requiredField : {
name: 'ValidatorError',
message: 'requiredField is required.',
properties: {
message: 'requiredField is required.',
type: 'required',
path: 'requiredField '
},
kind: 'required',
path: 'requiredField'
}
},
doc:{
title: 'title1',
requiredField: 'acc123234jkhaksd',
status: 'pending',
isActive: false,
isDownload: false,
isDeleted: false,
createdAt: '2024-02-13T18:11:25.306Z',
updatedAt: '2024-02-13T18:11:25.306Z'
}
index: 2
_message: 'requiredField validation failed',
name: 'ValidationError',
message: 'requiredField validation failed: requiredField: requiredField number is required.'
}
Metadata
Metadata
Assignees
Labels
enhancementThis issue is a user-facing general improvement that doesn't fix a bug or add a new featureThis issue is a user-facing general improvement that doesn't fix a bug or add a new featurenew featureThis change adds new functionality, like a new method or classThis change adds new functionality, like a new method or class