fix(model): throw ObjectParameterError in insertOne() if doc is not an object#16221
Open
IshitaSingh0822 wants to merge 2 commits intoAutomattic:masterfrom
Open
fix(model): throw ObjectParameterError in insertOne() if doc is not an object#16221IshitaSingh0822 wants to merge 2 commits intoAutomattic:masterfrom
IshitaSingh0822 wants to merge 2 commits intoAutomattic:masterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Model.insertOne()did not validate that thedocargument is an object,unlike
Model.insertMany()which throws anObjectParameterErrorfornon-object entries.
This PR adds the same input validation to
insertOne()for consistencyand better developer experience.
Problem
When a non-object value (like a string, number, or boolean) was passed
to
Model.insertOne(), Mongoose would either silently fail or throw acryptic internal error that was hard to debug.
Solution
Added the same
ObjectParameterErrorcheck that already exists ininsertMany()toinsertOne()as well.Changes
lib/model.js— AddedObjectParameterErrorcheck at the top ofinsertOne()test/insertOne.validation.test.js— Added 7 test casesWhy this matters
insertOne()andinsertMany()behave consistentlyTesting
All 7 new test cases pass. Existing test suite passes with no regressions.
4301 passing, 0 failing.