update remove findbyidandupdate example deletemany node.js mongodb mongoose

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.