Bluebird on täysin varustettu Promise-kirjasto JavaScriptille. Bluebirdin vahvin piirre on, että sen avulla voit "lupailla" muita Node-moduuleja niiden käyttämiseksi asynkronisesti. Promisify on käsite, jota käytetään takaisinsoittotoimintoihin. Tätä käsitettä käytetään varmistamaan, että jokainen kutsuttu takaisinsoittofunktio palauttaa jonkin verran arvoa.
Joten jos solmun JS-moduuli sisältää takaisinkutsutoiminnon, joka ei palauta arvoa, ja jos lupaamme solmumoduulin, kaikkia kyseisen solmumoduulin toimintoja muokataan automaattisesti sen varmistamiseksi, että se palauttaa arvon.
Joten voit käyttää BlueBirdiä tekemään MongoDB-moduulin toimimaan asynkronisesti. Tämä lisää vain toisen tason helppoutta kirjoitettaessa Node.js-sovelluksia.
Tarkastelemme esimerkkiä bluebird-moduulin käytöstä.
Esimerkkimme muodostaa ensin yhteyden "EmployeeDB" -tietokannan "Työntekijäkokoelmaan". Jos "sitten" yhteys muodostetaan, se saa kaikki kokoelman tietueet ja näyttää ne konsolissa vastaavasti.
Lupausten luominen BlueBird-kirjastolla
Vaihe 1) Asenna NPM-moduulit
Jos haluat käyttää Bluebirdiä Node-sovelluksessa, tarvitaan Bluebird-moduuli. Asenna Bluebird-moduuli suorittamalla seuraava komento
npm asenna bluebird
Vaihe 2) Seuraava vaihe on sisällyttää bluebird-moduuli koodiin ja lupaamaan koko MongoDB-moduuli. Lupauksella tarkoitamme, että sinilintu varmistaa, että jokainen MongoDB-kirjastossa määritelty menetelmä palauttaa lupauksen.
Koodin selitys: -
- Vaadi-komentoa käytetään Bluebird-kirjaston sisällyttämiseen.
- Käytä Bluebirdin .promisifyAll () -menetelmää luodaksesi asynkronisen version jokaisesta MongoDB-moduulin tarjoamasta menetelmästä. Tämä varmistaa, että kukin MongoDB-moduulin menetelmä toimii taustalla ja että lupa palautetaan jokaisesta MongoDB-kirjaston menetelmäpuhelusta.
Vaihe 3) Viimeinen vaihe on muodostaa yhteys tietokantaan, noutaa kaikki kokoelmamme tietueet ja näyttää ne konsolilokissamme.
Koodin selitys: -
- Huomaat, että käytämme "connectAsync" -menetelmää tavallisen yhteysmenetelmän sijasta yhteyden muodostamiseen tietokantaan. Bluebird lisää Async-avainsanan jokaiseen MongoDB-kirjaston tapaan erottaa ne puhelut, jotka palauttavat lupaukset, ja ne, jotka eivät. Joten ei ole takeita siitä, että menetelmät ilman Async-sanaa palauttavat arvon.
- Samoin kuin connectAsync-menetelmä, käytämme nyt findAsync-menetelmää kaikkien mongoDB 'Employee' -kokoelman tietueiden palauttamiseksi.
- Lopuksi, jos findAsync palauttaa onnistuneen lupauksen, määritämme koodilohkon iteroimaan kokoelman kaikki tietueet ja näyttämään ne konsolilokissa.
Jos yllä olevat vaiheet suoritetaan oikein, kaikki työntekijän kokoelman asiakirjat näytetään konsolissa alla olevan tuloksen mukaisesti.
Tässä on viitteesi koodi
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);})});