Mongoose findByIdAndUpdate no devuelve el modelo correcto

Tengo un problema que no he visto antes con Mongoose findByIdAndUpdate que no devuelve el modelo correcto en la callback.

Aquí está el código:

var id = args._id; var updateObj = {updatedDate: Date.now()}; _.extend(updateObj, args); Model.findByIdAndUpdate(id, updateObj, function(err, model) { if (err) { logger.error(modelString +':edit' + modelString +' - ' + err.message); self.emit('item:failure', 'Failed to edit ' + modelString); return; } self.emit('item:success', model); }); 

El documento original en el db se ve así:

 { _id: 1234 descriptors: Array[2], name: 'Test Name 1' } 

El updateObj entrando se ve así:

 { _id: 1234 descriptors: Array[2], name: 'Test Name 2' } 

El modelo devuelto por la callback es idéntico al modelo original, no al updatedObj. Si consulto el db, se ha actualizado correctamente. Simplemente no se devuelve de la base de datos.

Esto se siente como un error de “usuario estúpido”, pero no puedo verlo. Cualquier idea muy apreciada.

En Mongoose 4.0, el valor predeterminado para la new opción de findByIdAndUpdate (y findOneAndUpdate ) ha cambiado a false (ver # 2262 de las notas de la versión ). Esto significa que debe establecer explícitamente la opción en true para obtener la nueva versión del documento, después de aplicar la actualización:

 Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...