Bluebird este o bibliotecă Promise completă pentru JavaScript. Cea mai puternică caracteristică a Bluebird este că vă permite să „promiteți” alte module Node pentru a le utiliza asincron. Promisify este un concept aplicat funcțiilor de callback. Acest concept este utilizat pentru a se asigura că fiecare funcție de apel invers care este numită returnează o anumită valoare.
Deci, dacă un modul Node JS conține o funcție de apel invers care nu returnează o valoare și dacă promitem modulul nodului, toate funcțiile din acel modul de nod specific ar fi modificate automat pentru a se asigura că returnează o valoare.
Deci, puteți utiliza BlueBird pentru a face modulul MongoDB să ruleze asincron. Acest lucru adaugă un alt nivel de ușurință atunci când scrieți aplicații Node.js.
Vom analiza un exemplu de utilizare a modulului bluebird.
Exemplul nostru va stabili mai întâi o conexiune la „Colecția angajaților” din baza de date „EmployeeDB”. Dacă este stabilită „atunci” conexiunea, atunci va primi toate înregistrările din colecție și le va afișa în consolă în consecință.
Generați promisiuni cu biblioteca BlueBird
Pasul 1) Instalarea modulelor NPM
Pentru a utiliza Bluebird dintr-o aplicație Node, este necesar modulul Bluebird. Pentru a instala modulul Bluebird, executați comanda de mai jos
npm instalați bluebird
Pasul 2) Următorul pas este să includeți modulul bluebird în codul dvs. și să promiteți întregul modul MongoDB. Prin promisiune, înțelegem că Bluebird se va asigura că fiecare metodă definită în biblioteca MongoDB returnează o promisiune.
Cod Explicație: -
- Comanda require este utilizată pentru a include biblioteca Bluebird.
- Utilizați metoda .promisifyAll () de la Bluebird pentru a crea o versiune asincronizată a fiecărei metode oferite de modulul MongoDB. Acest lucru asigură faptul că fiecare metodă a modulului MongoDB va rula în fundal și se asigură că o promisiune este returnată pentru fiecare apel de metodă din biblioteca MongoDB.
Pasul 3) Ultimul pas este să ne conectăm la baza noastră de date, să preluăm toate înregistrările din colecția noastră și să le afișăm în jurnalul de consolă.
Cod Explicație: -
- Veți observa că folosim metoda „connectAsync” în locul metodei normale de conectare pentru conectarea la baza de date. Bluebird adaugă de fapt cuvântul cheie Async la fiecare metodă din biblioteca MongoDB pentru a distinge acele apeluri care returnează promisiunile și cele care nu. Deci, nu există nicio garanție că metodele fără cuvântul Async vor returna o valoare.
- Similar cu metoda connectAsync, folosim acum metoda findAsync pentru a returna toate înregistrările din colecția mongoDB „Angajat”.
- În cele din urmă, dacă findAsync returnează o promisiune reușită, atunci definim un bloc de cod pentru a itera prin fiecare înregistrare din colecție și le vom afișa în jurnalul consolei.
Dacă pașii de mai sus sunt derulați corect, toate documentele din colecția Angajați vor fi afișate în consolă așa cum se arată în rezultatul de mai jos.
Iată codul pentru referință
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);})});