node.js - remove - La mangosta findByIdAndUpdate no devuelve el modelo correcto
mongoose remove by id (1)
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) {...
Tengo un problema que no he visto antes con el Mongoose findByIdAndUpdate que no devuelve el modelo correcto en la devolución de llamada.
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 la base de datos tiene este aspecto:
{
_id: 1234
descriptors: Array[2],
name: ''Test Name 1''
}
El updateObj que entra se ve así:
{
_id: 1234
descriptors: Array[2],
name: ''Test Name 2''
}
El modelo devuelto por la devolución de llamada es idéntico al modelo original, no el actualizadoObj. Si consulto el db, se ha actualizado correctamente. Simplemente no se devuelve desde la base de datos.
Esto se siente como un error de ''usuario estúpido'', pero no puedo verlo. Cualquier idea muy apreciada.