Bluebird är ett fullt utrustat Promise-bibliotek för JavaScript. Det starkaste med Bluebird är att det låter dig "lova" andra nodmoduler för att kunna använda dem asynkront. Promisify är ett koncept som används för återuppringningsfunktioner. Detta koncept används för att säkerställa att varje återuppringningsfunktion som kallas returnerar något värde.
Så om en Node JS-modul innehåller en återuppringningsfunktion som inte returnerar ett värde, och om vi lovar nodmodulen, ändras alla funktionerna i den specifika nodmodulen automatiskt för att säkerställa att den returnerar ett värde.
Så du kan använda BlueBird för att få MongoDB-modulen att köra asynkront. Detta lägger bara till en annan nivå av lätthet när du skriver Node.js-applikationer.
Vi kommer att titta på ett exempel på hur man använder bluebird-modulen.
Vårt exempel kommer först att upprätta en anslutning till "Medarbetarsamlingen" i databasen "EmployeeDB". Om "då" -anslutning upprättas kommer alla poster i samlingen att hämtas och visas i konsolen i enlighet därmed.
Skapa löften med BlueBird-biblioteket
Steg 1) Installera NPM-modulerna
För att kunna använda Bluebird från en nodapplikation krävs Bluebird-modulen. För att installera Bluebird-modulen kör du kommandot nedan
npm installera bluebird
Steg 2) Nästa steg är att inkludera bluebird-modulen i din kod och lova hela MongoDB-modulen. Med promisify menar vi att bluebird kommer att säkerställa att varje metod som definieras i MongoDB-biblioteket returnerar ett löfte.
Kodförklaring: -
- Kommandot kräver används för att inkludera Bluebird-biblioteket.
- Använd Bluebirds .promisifyAll () -metod för att skapa en async-version av varje metod som MongoDB-modulen tillhandahåller. Detta säkerställer att varje metod i MongoDB-modulen körs i bakgrunden och säkerställer att ett löfte returneras för varje metodanrop i MongoDB-biblioteket.
Steg 3) Det sista steget är att ansluta till vår databas, hämta alla poster i vår samling och visa dem i vår konsollogg.
Kodförklaring: -
- Du kommer att märka att vi använder metoden "connectAsync" istället för den vanliga anslutningsmetoden för att ansluta till databasen. Bluebird lägger faktiskt till Async-nyckelordet till varje metod i MongoDB-biblioteket för att skilja de samtal som returnerar löften och de som inte gör det. Så det finns ingen garanti för att metoder utan Async-ordet returnerar ett värde.
- I likhet med connectAsync-metoden använder vi nu metoden findAsync för att returnera alla poster i mongoDB 'Employee' -samlingen.
- Slutligen, om findAsync returnerar ett lyckat löfte definierar vi sedan ett kodblock som ska upprepas genom varje post i samlingen och visar dem i konsolloggen.
Om stegen ovan utförs korrekt visas alla dokument i medarbetarsamlingen i konsolen som visas i utmatningen nedan.
Här är koden för din referens
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);})});