Mongoose ahora admite esto de forma nativa con findOneAndUpdate (llama a MongoDB findAndModify).
La opción upsert =true crea el objeto si no existe. predeterminado en falso .
var query = {'username': req.user.username};
req.newData.username = req.user.username;
MyModel.findOneAndUpdate(query, req.newData, {upsert: true}, function(err, doc) {
if (err) return res.send(500, {error: err});
return res.send('Succesfully saved.');
});
En versiones anteriores, Mongoose no admite estos ganchos con este método:
- predeterminados
- establecedores
- validadores
- programa intermedio