Mongoose: findOneAndUpdate avec {upsert : true} ne renvoie pas le document

Créé le 29 avr. 2015  ·  4Commentaires  ·  Source: Automattic/mongoose

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

help

Commentaire le plus utile

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);
});

Tous les 4 commentaires

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 !

Cette page vous a été utile?
0 / 5 - 0 notes