Bluebird es una biblioteca de promesas con todas las funciones para JavaScript. La característica más fuerte de Bluebird es que le permite "promisificar" otros módulos de nodo para usarlos de forma asincrónica. Promisify es un concepto aplicado 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 módulo Node JS contiene una función de devolución de llamada que no devuelve un valor, y si Promisificamos el módulo del nodo, todas las funciones en ese módulo de nodo específico se modificarán automáticamente para garantizar que devuelva un valor.
Entonces puede usar BlueBird para hacer que el módulo MongoDB se ejecute de forma asincrónica. Esto solo agrega otro nivel de facilidad al escribir aplicaciones Node.js.
Veremos un ejemplo de cómo usar 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.
Generando promesas con la biblioteca BlueBird
Paso 1) Instalación de los módulos NPM
Para usar Bluebird desde dentro de una aplicación Node, se requiere el módulo Bluebird. Para instalar el módulo Bluebird, ejecute el siguiente comando
npm instalar bluebird
Paso 2) El siguiente paso es incluir el módulo bluebird en su código y prometer todo el módulo MongoDB. Por promisificar, queremos decir que bluebird se asegurará de que todos y cada uno de los métodos definidos en la biblioteca MongoDB devuelvan una promesa.
Explicación del código: -
- El comando require se usa para incluir la biblioteca Bluebird.
- Utilice el método .promisifyAll () de Bluebird para crear una versión asíncrona de cada método que proporciona el módulo MongoDB. Esto asegura que cada método del módulo MongoDB se ejecutará en segundo plano y garantizará que se devuelva una promesa para cada llamada de método en la biblioteca MongoDB.
Paso 3) El paso final es conectarse a nuestra base de datos, recuperar todos los registros de nuestra colección y mostrarlos en el registro de nuestra consola.
Explicación del código: -
- Notará que estamos usando el método "connectAsync" en lugar del método de conexión normal para conectarnos a la base de datos. Bluebird en realidad agrega la palabra clave Async a cada método en la biblioteca MongoDB para distinguir aquellas llamadas que devuelven promesas y aquellas que no. Por lo tanto, no hay garantía de que los métodos sin la palabra Async devuelvan un valor.
- De manera similar al método connectAsync, ahora estamos usando el método findAsync para devolver todos los registros de la colección 'Empleado' de mongoDB.
- Finalmente, si findAsync devuelve una promesa exitosa, entonces definimos un bloque de código para iterar a través de cada registro en 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 de Empleados se mostrarán en la consola como se muestra en el resultado a continuación.
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);})});