Bluebird NPM: Bluebird JS Promise med eksempel
Hvad er Bluebird JS?
Bluebird JS er et fuldt udstyret Promise-bibliotek til JavaManuskript. Den stærkeste egenskab ved Bluebird er, at den giver dig mulighed for at "love" andre Node-moduler for at bruge dem asynkront. Promisify er et koncept, der anvendes til tilbagekaldsfunktioner. Dette koncept bruges til at sikre, at hver tilbagekaldsfunktion, der kaldes, returnerer en vis værdi.
Så hvis en NodeJS modul indeholder en tilbagekaldsfunktion, som ikke returnerer en værdi, og hvis vi lover nodemodulet, vil alle funktionerne i det specifikke nodemodul automatisk blive ændret for at sikre, at det returnerer en værdi.
Så du kan bruge BlueBird til at lave MongoDB modul køres asynkront. Dette tilføjer blot endnu et niveau af lethed, når du skriver Node.js-applikationer.
Vi vil se på et eksempel på, hvordan man bruger bluebird-modulet.
Vores eksempel vil først etablere en forbindelse til "Employee collection" i "EmployeeDB" databasen. Hvis "så" forbindelse er etableret, vil den hente alle posterne i samlingen og vise dem i konsollen i overensstemmelse hermed.
Sådan genererer du løfter med Bluebird JS Library
Her er et trin for trin eksempel skabe løfter med Bluebird JS bibliotek:
Trin 1) Installation af NPM-modulerne
For at bruge Bluebird fra en Node-applikation kræves Bluebird-modulet. For at installere Bluebird-modulet skal du køre kommandoen nedenfor
npm installere bluebird
Trin 2) Inkluder Bluebird-moduler
Det næste trin er at inkludere bluebird-modulet i din kode og love det hele MongoDB modul. Med lovende mener vi, at bluebird vil sikre, at hver eneste metode, der er defineret i MongoDB biblioteket giver et løfte.
Kodeforklaring:-
- Kommandoen require bruges til at inkludere Bluebird-biblioteket.
- Brug Bluebirds .promisifyAll() metode til at oprette en asynkron version af hver metode MongoDB modul giver. Dette sikrer, at hver metode til MongoDB modulet kører i baggrunden og sikrer, at et løfte returneres for hvert metodekald i MongoDB bibliotek.
Trin 3) Opret forbindelse til databasen
Det sidste trin er at oprette forbindelse til vores database, hente alle poster i vores samling og vise dem i vores konsollog.
Kodeforklaring:-
- Du vil bemærke, at vi bruger "connectAsync" -metoden i stedet for den normale forbindelsesmetode til at oprette forbindelse til database. Bluebird tilføjer faktisk nøgleordet Async til hver metode i MongoDB bibliotek for at skelne de opkald, der giver løfter, og dem, der ikke gør. Så der er ingen garanti for, at metoder uden Async-ordet returnerer en værdi.
- I lighed med connectAsync-metoden bruger vi nu findAsync-metoden til at returnere alle poster i mongoDB 'Employee'-samlingen.
- Endelig, hvis findAsync returnerer et vellykket løfte, definerer vi en kodeblok, der skal gentages gennem hver post i samlingen og vise dem i konsolloggen.
Hvis ovenstående trin udføres korrekt, vil alle dokumenterne i medarbejdersamlingen blive vist i konsollen som vist i outputtet nedenfor.
Her er koden til din reference:
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); }) });