MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Node.js + MongoDB :insérez-en un et renvoyez le document nouvellement inséré

MISE À JOUR 2021 : Cette approche ne fonctionne plus avec le pilote MongoDB 4.x. Le résultat de retour de l'insertOne ne contient qu'un ID et un indicateur d'accusé de réception :https://mongodb.github.io/node-mongodb-native/4.1/interfaces/InsertOneResult.html

Avec ce changement, il n'y a AUCUN moyen d'accomplir le comportement requis. Il faut soit faire une autre requête DB, soit combiner l'insertId renvoyé et les données d'objet d'origine.

La response Le résultat contient des informations indiquant si la commande a réussi ou non et le nombre d'enregistrements insérés.

Si vous souhaitez renvoyer les données insérées, vous pouvez essayer response.ops , par exemple :

db.collection('mycollection').insertOne(doc, function (error, response) {
    if(error) {
        console.log('Error occurred while inserting');
       // return 
    } else {
       console.log('inserted record', response.ops[0]);
      // return 
    }
});

Documentation officielle pour insertOne :

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#insertOne

Le callback saisissez :

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~insertOneWriteOpCallback

Le result saisissez :

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~insertOneWriteOpResult