Bluebird er et fullverdig Promise-bibliotek for JavaScript. Den sterkeste egenskapen til Bluebird er at den lar deg "lovliggjøre" andre Node-moduler for å kunne bruke dem asynkront. Promisify er et konsept som brukes på tilbakeringingsfunksjoner. Dette konseptet brukes til å sikre at hver tilbakeringingsfunksjon som kalles, gir noe verdi.
Så hvis en Node JS-modul inneholder en tilbakeringingsfunksjon som ikke returnerer en verdi, og hvis vi lover nodemodulen, vil alle funksjonene i den spesifikke nodemodulen automatisk endres for å sikre at den returnerer en verdi.
Så du kan bruke BlueBird til å få MongoDB-modulen til å kjøre asynkront. Dette legger bare til et annet nivå av letthet når du skriver Node.js-applikasjoner.
Vi vil se på et eksempel på hvordan du bruker bluebird-modulen.
Eksemplet vårt vil først etablere en forbindelse til "Ansattesamling" i "EmployeeDB" -databasen. Hvis "da" -forbindelse er opprettet, vil den få alle postene i samlingen og vise dem i konsollen deretter.
Generere løfter med BlueBird-biblioteket
Trinn 1) Installere NPM-modulene
For å bruke Bluebird fra et Node-program, er Bluebird-modulen nødvendig. For å installere Bluebird-modulen, kjør kommandoen nedenfor
npm installer bluebird
Trinn 2) Det neste trinnet er å inkludere bluebird-modulen i koden din og løfte hele MongoDB-modulen. Med promisify mener vi at bluebird vil sikre at hver metode som er definert i MongoDB-biblioteket, returnerer et løfte.
Kode Forklaring: -
- Kravkommandoen brukes til å inkludere Bluebird-biblioteket.
- Bruk Bluebirds .promisifyAll () -metoden for å lage en asynkroniseringsversjon av hver metode MongoDB-modulen gir. Dette sikrer at hver metode i MongoDB-modulen kjører i bakgrunnen og sikrer at et løfte blir returnert for hver metodeanrop i MongoDB-biblioteket.
Trinn 3) Det siste trinnet er å koble til databasen vår, hente alle postene i samlingen vår og vise dem i konsolloggen vår.
Kode Forklaring: -
- Du vil merke at vi bruker "connectAsync" -metoden i stedet for den vanlige tilkoblingsmetoden for å koble til databasen. Bluebird legger faktisk til Async-nøkkelordet til hver metode i MongoDB-biblioteket for å skille mellom samtalene som returnerer løfter og de som ikke gjør det. Så det er ingen garanti for at metoder uten Async-ordet vil gi en verdi.
- I likhet med connectAsync-metoden bruker vi nå metoden findAsync for å returnere alle postene i mongoDB 'Employee' -samlingen.
- Til slutt, hvis findAsync returnerer et vellykket løfte, definerer vi en kodeblokk som skal gjentas gjennom hver post i samlingen og viser dem i konsolloggen.
Hvis trinnene ovenfor utføres riktig, vil alle dokumentene i ansattesamlingen vises i konsollen som vist i utdataene nedenfor.
Her er koden som referanse
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);})});