Saltar al contenido

¿Cómo usar MongoDB con promesas en Node.js?

Contamos con tu apoyo para compartir nuestros posts acerca de las ciencias de la computación.

Solución:

Su enfoque es casi correcto, solo un pequeño error en su argumento.

var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/example'
MongoClient.connect(url)
  .then(function (db)  // <- db as first argument
    console.log(db)
  )
  .catch(function (err) )

también puedes hacer asíncrono/espera

async function main()
 let client, db;
 try
    client = await MongoClient.connect(mongoUrl, useNewUrlParser: true);
    db = client.db(dbName);
    let dCollection = db.collection('collectionName');
    let result = await dCollection.find();   
    // let result = await dCollection.countDocuments();
    // your other codes ....
    return result.toArray();
 
 catch(err) console.error(err);  // catch any mongo error here
 finally client.close();  // make sure to close your connection after

Dado que ninguna de las respuestas anteriores menciona cómo hacer esto sin bluebird o q o cualquier otra biblioteca elegante, permítanme agregar mis 2 centavos en esto.

Así es como se hace una inserción con promesas ES6 nativas

    'use strict';

const
    constants = require('../core/constants'),
    mongoClient = require('mongodb').MongoClient;



function open()

    // Connection URL. This is where your mongodb server is running.
    let url = constants.MONGODB_URI;
    return new Promise((resolve, reject)=>
        // Use connect method to connect to the Server
        mongoClient.connect(url, (err, db) => 
            if (err) 
                reject(err);
             else 
                resolve(db);
            
        );
    );


function close(db)
    //Close connection
    if(db)
        db.close();
    


let db = 
    open : open,
    close: close


module.exports = db;

Definí mi método open() como el que devuelve una promesa. Para realizar una inserción, aquí está mi fragmento de código a continuación

function insert(object)
    let database = null;
    zenodb.open()
    .then((db)=>
        database = db;
        return db.collection('users')    
    )
    .then((users)=>
        return users.insert(object)
    )
    .then((result)=>
        console.log(result);
        database.close();
    )
    .catch((err)=>
        console.error(err)
    )




insert(name: 'Gary Oblanka', age: 22);

Espero que ayude. Si tiene alguna sugerencia para mejorar esto, hágamelo saber, ya que estoy dispuesto a mejorar 🙂

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *