Bluebird é uma biblioteca Promise com recursos completos para JavaScript. O recurso mais forte do Bluebird é que ele permite que você "prometesse" outros módulos do Node para usá-los de forma assíncrona. Promisify é um conceito aplicado a funções de retorno de chamada. Esse conceito é usado para garantir que toda função de retorno de chamada chamada retorne algum valor.
Portanto, se um módulo Node JS contém uma função de retorno de chamada que não retorna um valor, e se nós promisificamos o módulo de nó, todas as funções naquele módulo de nó específico seriam automaticamente modificadas para garantir que ele retorne um valor.
Portanto, você pode usar o BlueBird para fazer o módulo MongoDB rodar de forma assíncrona. Isso apenas adiciona outro nível de facilidade ao escrever aplicativos Node.js.
Veremos um exemplo de como usar o módulo bluebird.
Nosso exemplo primeiro estabelecerá uma conexão com a "coleção Employee" no banco de dados "EmployeeDB". Se a conexão "then" for estabelecida, ele obterá todos os registros da coleção e os exibirá no console de acordo.
Gerando promessas com a biblioteca BlueBird
Etapa 1) Instalação dos módulos NPM
Para usar o Bluebird de dentro de um aplicativo Node, o módulo Bluebird é necessário. Para instalar o módulo Bluebird, execute o comando abaixo
npm instalar bluebird
Etapa 2) A próxima etapa é incluir o módulo bluebird em seu código e promisificar todo o módulo MongoDB. Por promisify, queremos dizer que o bluebird irá garantir que cada método definido na biblioteca MongoDB retorne uma promessa.
Explicação do código: -
- O comando require é usado para incluir a biblioteca Bluebird.
- Use o método .promisifyAll () do Bluebird para criar uma versão assíncrona de cada método que o módulo MongoDB fornece. Isso garante que cada método do módulo MongoDB seja executado em segundo plano e garante que uma promessa seja retornada para cada chamada de método na biblioteca MongoDB.
Etapa 3) A etapa final é conectar-se ao nosso banco de dados, recuperar todos os registros em nossa coleção e exibi-los em nosso log do console.
Explicação do código: -
- Você notará que estamos usando o método "connectAsync" em vez do método de conexão normal para conectar ao banco de dados. Na verdade, o Bluebird adiciona a palavra-chave Async a cada método na biblioteca MongoDB para distinguir aquelas chamadas que retornam promessas e aquelas que não retornam. Portanto, não há garantia de que os métodos sem a palavra Async retornarão um valor.
- Semelhante ao método connectAsync, agora estamos usando o método findAsync para retornar todos os registros na coleção mongoDB 'Funcionário'.
- Finalmente, se findAsync retornar uma promessa bem-sucedida, definimos um bloco de código para iterar em cada registro na coleção e exibi-los no log do console.
Se as etapas acima forem realizadas corretamente, todos os documentos da coleção Employee serão exibidos no console, conforme mostrado na saída abaixo.
Aqui está o código para sua referência
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);})});