Bluebird NPM: Promesa de Bluebird JS con ejemplo

ยฟQuรฉ es Bluebird JS?

Bluebird JS es una biblioteca Promise con todas las funciones para JavaScript. La caracterรญstica mรกs destacada de Bluebird es que permite "promisar" otros mรณdulos de Node para usarlos de forma asincrรณnica. Promisify es un concepto que se aplica a las funciones de devoluciรณn de llamada. Este concepto se utiliza para garantizar que cada funciรณn de devoluciรณn de llamada que se llama devuelva algรบn valor.

Entonces si un NodeJS El mรณdulo contiene una funciรณn de devoluciรณn de llamada que no devuelve un valor, y si prometemos el mรณdulo de nodo, todas las funciones en ese mรณdulo de nodo especรญfico se modificarรกn automรกticamente para garantizar que devuelva un valor.

Entonces puedes usar BlueBird para hacer el MongoDB El mรณdulo se ejecuta de forma asincrรณnica. Esto simplemente agrega otro nivel de facilidad al escribir aplicaciones Node.js.

Veremos un ejemplo de cรณmo utilizar el mรณdulo bluebird.

Nuestro ejemplo primero establecerรก una conexiรณn con la "colecciรณn de empleados" en la base de datos "EmployeeDB". Si se establece la conexiรณn "entonces", obtendrรก todos los registros de la colecciรณn y los mostrarรก en la consola en consecuencia.

Cรณmo generar promesas con la biblioteca Bluebird JS

Aquรญ estรก el ejemplo paso a paso para generar promesas con la biblioteca Bluebird JS:

Paso 1) Instalaciรณn de los mรณdulos NPM

Para utilizar Bluebird desde una aplicaciรณn Node, se requiere el mรณdulo Bluebird. Para instalar el mรณdulo Bluebird, ejecute el siguiente comando

npm instala pรกjaro azul

Paso 2) Incluir mรณdulos Bluebird

El siguiente paso es incluir el mรณdulo bluebird en su cรณdigo y prometer todo MongoDB mรณdulo. Por promisificar queremos decir que bluebird garantizarรก que todos y cada uno de los mรฉtodos definidos en el MongoDB La biblioteca devuelve una promesa.

Genere promesas con la biblioteca Bluebird JS

Explicaciรณn del cรณdigo: -

  1. El comando require se utiliza para incluir la biblioteca Bluebird.
  2. Utilice el mรฉtodo .promisifyAll() de Bluebird para crear una versiรณn asincrรณnica de cada mรฉtodo. MongoDB proporciona el mรณdulo. Esto asegura que cada mรฉtodo del MongoDB El mรณdulo se ejecutarรก en segundo plano y garantizarรก que se devuelva una promesa para cada llamada a mรฉtodo en el MongoDB biblioteca.

Paso 3) Conรฉctese a la base de datos

El รบltimo paso es conectarse a nuestra base de datos, recuperar todos los registros de nuestra colecciรณn y mostrarlos en el registro de nuestra consola.

Genere promesas con la biblioteca Bluebird JS

Explicaciรณn del cรณdigo: -

  1. Notarรกs que estamos usando el mรฉtodo โ€œconnectAsyncโ€ en lugar del mรฉtodo de conexiรณn normal para conectarnos a la base de datos de CRISPR Medicine News. Bluebird en realidad agrega la palabra clave Async a cada mรฉtodo en el MongoDB biblioteca para distinguir las llamadas que devuelven promesas de las que no. Por lo tanto, no hay garantรญa de que los mรฉtodos sin la palabra Async devuelvan un valor.
  2. De manera similar al mรฉtodo connectAsync, ahora usamos el mรฉtodo findAsync para devolver todos los registros en la colecciรณn 'Empleado' de mongoDB.
  3. Finalmente, si findAsync devuelve una promesa exitosa, definimos un bloque de cรณdigo para iterar a travรฉs de cada registro de la colecciรณn y mostrarlos en el registro de la consola.

Si los pasos anteriores se llevan a cabo correctamente, todos los documentos de la colecciรณn Empleados se mostrarรกn en la consola como se muestra en el resultado a continuaciรณn.

Genere promesas con la biblioteca Bluebird JS

Aquรญ estรก el cรณdigo para su referencia:

var Promise = require('bluebird');

var mongoClient = Promise.promisifyAll(require('mongodb')).MongoClient;

var url = 'mongodb://localhost/EmployeeDB';
mongoClient.connectAsync('mongodb://localhost/EmployeeDB')

.then(function(db) {
        return db.collection('Employee').findAsync({})

    })
    .then(function(cursor) {
        cursor.each(function(err, doc) {
            console.log(doc);
        })
    });

Resumir este post con: