Mettre à jour un enregistrement où _id = :id avec la Mangouste
Je suis en train de mettre à jour un enregistrement existant avec la Mangouste. L'insert est OK, mais pas la mise à jour.
Voici mon extrait de:
app.post('/submit', function(req, res) {
var my_visit = new models.visits({
date: req.body.visit_date,
type: req.body.visit_type,
agency: req.body.visit_agency,
city: req.body.visit_city,
url: req.body.visit_url,
note: req.body.visit_note
});
//INSERT
if(req.body.id == 0) {
my_visit.save(function(err) {
if(err) { throw err; }
console.log('added visit');
res.redirect('/');
});
} else { //UPDATE
var upsertData = my_visit.toObject();
console.log(req.body.id); //OK
models.visits.update({ _id: req.body.id }, upsertData, { multi: false }, function(err) {
if(err) { throw err; }
console.log('updated visit: '+ req.body.id);
res.redirect('/');
});
}
})
La réponse est Mod on _id is not allowed
.
Je veux juste mettre à jour la ligne comme WHERE id = id
dans MySQL. Je n'ai pas trouver la bonne syntaxe.
OriginalL'auteur Syl | 2013-06-22
Vous devez vous connecter pour publier un commentaire.
Selon cette question et cette autre, le
Mod on _id is not allowed
se produit lorsque l'on tente de mettre à jour un objet à partir de son id sans le supprimer en premier.J'ai également trouvé ce github problème qui tente d'expliquer une solution. Il est dit explicitement:
La solution, il me semble, est de faire ce qui suit:
Sur une note de côté, vous pouvez probablement réécrire votre itinéraire pour la créer et mettre à jour sans le si-clause else. mise à jour() prend une option supplémentaire
upsert
, qui, selon les docs:OriginalL'auteur verybadalloc