Récemment mis à niveau vers la mangouste 4.0.2. Le code suivant fonctionnait auparavant, mais entraîne maintenant la création du document mais non transmis au rappel :
Milestone.findOneAndUpdate({
......
}, {
......
}, {upsert: true}, function(err, res) {
// err === null
// res === null
done(err, res);
});
Cela ne se produit que sur upsert . Je peux vérifier que le document est créé, mais err et res sont systématiquement nuls. Si j'appelle à nouveau la fonction (maintenant que le document existe), cela fonctionne comme prévu.
mangouste : 4.0.2
nœud : v0.12.2
mongodb : 2.6.9
Utilisez l'option new: true
, voir les notes de version 4.0 sur #2262.
Milestone.findOneAndUpdate({
......
}, {
......
}, {upsert: true, 'new': true}, function(err, res) {
// err === null
// res === null
done(err, res);
});
Merci! Pourquoi le document est-il toujours créé si je laisse de côté new: true
?
new
est faux par défaut, et lorsque new
est faux, MongoDB renvoie le document tel qu'il était avant l'application de l'opération de mise à jour. Dans le cas des upserts, il n'y avait pas de document, donc nul.
Ah je vois, merci !
Commentaire le plus utile
Utilisez l'option
new: true
, voir les notes de version 4.0 sur #2262.