You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 29, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Jul 29, 2026. It is now read-only.
I've encountered an error while trying to update entities.
This is the generated code: findOneAndUpdate(req.params.id, req.body, {upsert: true, setDefaultsOnInsert: true, runValidators: true}).exec()
It was always updating the first element in the collection, because it's not specified what field it should compare.
As in the mongoose documentation: query.findOneAndUpdate(conditions, update, options)
The condition is not really a condition in the generated code.
I had to change it to the code below and it started to work as expected entity.findOneAndUpdate({"_id" : req.params.id }, req.body, {upsert: true, setDefaultsOnInsert: true, runValidators: true}).exec()
Has anybody encountered this problem, or is it written in some documentation that this is what we have to do if we want it to work? I haven't found it in any docs though.
is certainly incorrect; the first call argument must be a condition and in this case should be as you show in the second statement. It is annoying that mongoose doesn't detect this and treat it as an error.
Activity
dnewman-polar3d commentedon Sep 11, 2016
I too have encountered this in the past. However, I do not recall if it was in auto-generated code or simply my own mistake. That said, the call
findOneAndUpdate(req.params.id, req.body, {upsert: true, setDefaultsOnInsert: true, runValidators: true}).exec()is certainly incorrect; the first call argument must be a condition and in this case should be as you show in the second statement. It is annoying that mongoose doesn't detect this and treat it as an error.
thomsa commentedon Sep 11, 2016
If someone will verify that this is a bug, I can create a pull request later on.