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.
Basic changes
softDeleteById
andrestoreById
for easier manipulation of single documentsRecord<...>
withmongoose.FilterQuery<...>
for better self code documentation and lintingonFail
parameter so that the callee can decide how to handle errors.Removed find and save
The previous code would use a query to find all documents that matches the given query and loop through each document, either delete/restore them and call
save
, this operation can be slow specially when running a query against many documents. For better performance and code readability I have added a simpleupdateMany
for both therestore
andsoftDelete
methods, the return value will still be the number ofmodifiedDocuments
by the query.Exec
The previous code would not call
exec
when building a query a rellying entiry on the async/await which worked, but for safety reasons it's best to callexec
when we actually intend to run the query against the database.Context
These changes have been made to improve performance, code readability, and maintainability.