Enregistrer ou mettre à jour Mongoose
Existe-t-il un moyen intéressant d’enregistrer ou de mettre à jour un document en mangouste? Quelque chose comme ce que je cherche après
let campaign = new Campaign({
title: req.body.title,
market: req.body.market,
logo: req.body.logo,
additional_question_information: question,
status: status
});
campaign.saveOrUpdate().then(function() { ... }
Merci pour l'aide tous
Je pense que ce que vous recherchez s'appelle un "upsert".
Vous pouvez le faire en utilisant findOneAndUpdate et en passant l'option {upsert: true}, comme dans l'exemple ci-dessous:
let campaign = new Campaign({
title: req.body.title,
market: req.body.market,
logo: req.body.logo,
additional_question_information: question,
status: status
});
Campaign.findOneAndUpdate({
_id: mongoose.Types.ObjectId('CAMPAIGN ID TO SEARCH FOR')
}, campaign, { upsert: true }, function(err, res) {
// Deal with the response data/error
});
Le premier paramètre de findOneAndUpdate est la requête utilisée pour savoir si vous enregistrez un nouveau document ou mettez à jour un document existant. Si vous souhaitez renvoyer le document modifié dans les données de réponse, vous pouvez également ajouter l'option { new: true }
.
Documentation ici pour findOneAndUpdate: http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate
Vous pouvez utiliser la fonction findAndModify de MongoDB. En mangouste, cela est supporté nativement en appelant findOneAndUpdate (). Voici la documentation pour cela. http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate Notez que le troisième argument attend qu'un objet soit passé avec des options. Vous voulez utiliser { upsert : true }
pour créer un nouveau document s'il n'en existe pas.