Bluebird je popolna knjižnica Promise za JavaScript. Najmočnejša lastnost Bluebird-a je, da vam omogoča "promisifikacijo" drugih modulov Node, da jih lahko uporabljate asinhrono. Promisify je koncept, ki se uporablja za funkcije povratnega klica. Ta koncept se uporablja za zagotovitev, da vsaka klicana funkcija povratnega klica vrne neko vrednost.
Torej, če modul Node JS vsebuje funkcijo povratnega klica, ki ne vrne vrednosti, in če Promisify modul vozlišča, bi bile vse funkcije v tem modulu vozlišča samodejno spremenjene, da zagotovi vrnitev vrednosti.
Tako lahko z BlueBirdom modul MongoDB deluje asinhrono. To samo doda novo raven enostavnosti pri pisanju aplikacij Node.js.
Ogledali si bomo primer, kako uporabljati modul bluebird.
Naš primer bo najprej vzpostavil povezavo do "zbirke zaposlenih" v zbirki podatkov "EmployeeDB". Če se vzpostavi povezava "potem", bo dobil vse zapise v zbirki in jih ustrezno prikazal v konzoli.
Ustvarjanje obljub s knjižnico BlueBird
1. korak) Namestitev NPM modulov
Za uporabo programa Bluebird znotraj aplikacije Node potrebujete modul Bluebird. Če želite namestiti modul Bluebird, zaženite spodnji ukaz
npm namestite bluebird
Korak 2) Naslednji korak je vključitev modula bluebird v svojo kodo in promisifikacija celotnega modula MongoDB. Z promisify mislimo, da bo bluebird zagotovil, da vsaka metoda, definirana v knjižnici MongoDB, vrne obljubo.
Pojasnilo kode: -
- Ukaz require se uporablja za vključitev knjižnice Bluebird.
- Z metodo Bluebird .promisifyAll () ustvarite asinhnično različico vsake metode, ki jo ponuja modul MongoDB. To zagotavlja, da se bo vsaka metoda modula MongoDB izvajala v ozadju, in zagotavlja, da se za vsak klic metode v knjižnici MongoDB vrne obljuba.
3. korak) Zadnji korak je povezava z našo bazo podatkov, pridobivanje vseh zapisov v naši zbirki in prikaz v našem dnevniku konzole.
Pojasnilo kode: -
- Opazili boste, da za povezavo z bazo podatkov uporabljamo metodo "connectAsync" namesto običajne metode povezave. Bluebird dejansko doda ključno besedo Async vsaki metodi v knjižnici MongoDB, da loči tiste klice, ki vrnejo obljube, in tiste, ki jih ne. Torej ni nobenega zagotovila, da metode brez besede Async vrnejo vrednost.
- Podobno kot metoda connectAsync tudi zdaj uporabljamo metodo findAsync za vrnitev vseh zapisov v zbirki mongoDB 'Zaposleni'.
- Nazadnje, če findAsync vrne uspešno obljubo, potem definiramo blok kode, ki bo pregledal vsak zapis v zbirki in jih prikazal v dnevniku konzole.
Če so zgornji koraki izvedeni pravilno, bodo vsi dokumenti iz zbirke Employee prikazani v konzoli, kot je prikazano v spodnjem izhodu.
Tu je koda za vašo referenco
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);})});