Eu tenho um problema que não vi antes com o Mongoose findByIdAndUpdate não retornar o modelo correto no retorno de chamada.
Aqui está o 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);
});
O documento original no banco de dados tem a seguinte aparência:
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 1'
}
O updateObj que vai entrar se parece com este:
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 2'
}
O modelo retornado do retorno de chamada é idêntico ao modelo original, não o updatedObj. Se eu consultar o banco de dados, ele foi atualizado corretamente. Apenas não está sendo retornado do banco de dados.
Parece um erro de 'usuário estúpido', mas não consigo ver. Quaisquer ideias muito apreciadas.