Set fields to delete explicitly to null instead of undefined #45
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.
I use Meteor at work, and it configures the MongoDB drivers to ignore
undefined
values when updating a field instead of setting the field tonull
(unlike the MongoDB driver, which does not ignoreundefined
by default).This behavior caused a specific issue where the same job document was repeatedly fetched, resulting in a job running in a loop until the lock is released due to the end of the lock time. The document would match because of the second condition in this
$or
query, as thelockedAt
field wasn't set tonull
as expected:agenda/src/JobDbRepository.ts
Lines 133 to 146 in 16a7e8b
However, explicitly setting the fields to
null
instead ofundefined
is a better practice because, in the end, they turn intonull
in the database. Also, not ignoringundefined
and turning it intonull
feels weeeiiiird.If someone else is facing the same issue, a possible fix is adding this option to your
settings.json
file:This configuration ensures that setting a field to
undefined
actually sets it tonull
. But please note that if you have code relying on the previous behavior, this fix could potentially break something else.