Bluebird NPM: Bluebird JS Promise med eksempel
Hva er Bluebird JS?
Bluebird JS er et fullt utstyrt Promise-bibliotek for JavaManus. Den sterkeste egenskapen til Bluebird er at den lar deg "love" andre Node-moduler for å bruke dem asynkront. Promisify er et konsept som brukes på tilbakeringingsfunksjoner. Dette konseptet brukes for å sikre at hver tilbakeringingsfunksjon som kalles returnerer en verdi.
Så hvis en NodeJS modulen inneholder en tilbakeringingsfunksjon som ikke returnerer en verdi, og hvis vi lover nodemodulen, vil alle funksjonene i den spesifikke nodemodulen automatisk bli modifisert for å sikre at den returnerer en verdi.
Så du kan bruke BlueBird til å lage MongoDB modul kjøres asynkront. Dette gir bare enda et nivå av brukervennlighet når du skriver Node.js-applikasjoner.
Vi skal se på et eksempel på hvordan du bruker bluebird-modulen.
Vårt eksempel vil først etablere en tilkobling til "Employee collection" i "EmployeeDB"-databasen. Hvis "da"-tilkoblingen er etablert, vil den hente alle postene i samlingen og vise dem i konsollen tilsvarende.
Hvordan generere løfter med Bluebird JS Library
Her er et trinn for trinn eksempel generere løfter med Bluebird JS-bibliotek:
Trinn 1) Installere NPM-modulene
For å bruke Bluebird fra en Node-applikasjon, kreves Bluebird-modulen. For å installere Bluebird-modulen, kjør kommandoen nedenfor
npm installer bluebird
Trinn 2) Inkluder Bluebird-moduler
Det neste trinnet er å inkludere bluebird-modulen i koden din og love hele MongoDB modul. Med promisify mener vi at bluebird vil sikre at hver eneste metode som er definert i MongoDB biblioteket gir et løfte.
Kodeforklaring:-
- Require-kommandoen brukes til å inkludere Bluebird-biblioteket.
- Bruk Bluebirds .promisifyAll()-metode for å lage en asynkronisert versjon av hver metode MongoDB modul gir. Dette sikrer at hver metode for MongoDB modulen vil kjøre i bakgrunnen og sørge for at et løfte returneres for hvert metodekall i MongoDB bibliotek.
Trinn 3) Koble til databasen
Det siste trinnet er å koble til databasen vår, hente alle postene i samlingen vår og vise dem i konsollloggen vår.
Kodeforklaring:-
- Du vil legge merke til at vi bruker "connectAsync" -metoden i stedet for den vanlige tilkoblingsmetoden for å koble til database. Bluebird legger faktisk til Async-nøkkelordet til hver metode i MongoDB biblioteket for å skille de samtalene som gir løfter og de som ikke gjør det. Så det er ingen garanti for at metoder uten Async-ordet vil returnere en verdi.
- I likhet med connectAsync-metoden bruker vi nå findAsync-metoden for å returnere alle postene i mongoDB 'Employee'-samlingen.
- Til slutt, hvis findAsync returnerer et vellykket løfte, definerer vi en kodeblokk for å iterere gjennom hver post i samlingen og vise dem i konsollloggen.
Hvis trinnene ovenfor utføres riktig, vil alle dokumentene i ansattsamlingen 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); }) });