Bluebird Promises Tutorial

Innholdsfortegnelse:

Anonim

Bluebird er et fullverdig Promise-bibliotek for JavaScript. Den sterkeste egenskapen til Bluebird er at den lar deg "lovliggjøre" andre Node-moduler for å kunne bruke dem asynkront. Promisify er et konsept som brukes på tilbakeringingsfunksjoner. Dette konseptet brukes til å sikre at hver tilbakeringingsfunksjon som kalles, gir noe verdi.

Så hvis en Node JS-modul inneholder en tilbakeringingsfunksjon som ikke returnerer en verdi, og hvis vi lover nodemodulen, vil alle funksjonene i den spesifikke nodemodulen automatisk endres for å sikre at den returnerer en verdi.

Så du kan bruke BlueBird til å få MongoDB-modulen til å kjøre asynkront. Dette legger bare til et annet nivå av letthet når du skriver Node.js-applikasjoner.

Vi vil se på et eksempel på hvordan du bruker bluebird-modulen.

Eksemplet vårt vil først etablere en forbindelse til "Ansattesamling" i "EmployeeDB" -databasen. Hvis "da" -forbindelse er opprettet, vil den få alle postene i samlingen og vise dem i konsollen deretter.

Generere løfter med BlueBird-biblioteket

Trinn 1) Installere NPM-modulene

For å bruke Bluebird fra et Node-program, er Bluebird-modulen nødvendig. For å installere Bluebird-modulen, kjør kommandoen nedenfor

npm installer bluebird

Trinn 2) Det neste trinnet er å inkludere bluebird-modulen i koden din og løfte hele MongoDB-modulen. Med promisify mener vi at bluebird vil sikre at hver metode som er definert i MongoDB-biblioteket, returnerer et løfte.

Kode Forklaring: -

  1. Kravkommandoen brukes til å inkludere Bluebird-biblioteket.
  2. Bruk Bluebirds .promisifyAll () -metoden for å lage en asynkroniseringsversjon av hver metode MongoDB-modulen gir. Dette sikrer at hver metode i MongoDB-modulen kjører i bakgrunnen og sikrer at et løfte blir returnert for hver metodeanrop i MongoDB-biblioteket.

Trinn 3) Det siste trinnet er å koble til databasen vår, hente alle postene i samlingen vår og vise dem i konsolloggen vår.

Kode Forklaring: -

  1. Du vil merke at vi bruker "connectAsync" -metoden i stedet for den vanlige tilkoblingsmetoden for å koble til databasen. Bluebird legger faktisk til Async-nøkkelordet til hver metode i MongoDB-biblioteket for å skille mellom samtalene som returnerer løfter og de som ikke gjør det. Så det er ingen garanti for at metoder uten Async-ordet vil gi en verdi.
  2. I likhet med connectAsync-metoden bruker vi nå metoden findAsync for å returnere alle postene i mongoDB 'Employee' -samlingen.
  3. Til slutt, hvis findAsync returnerer et vellykket løfte, definerer vi en kodeblokk som skal gjentas gjennom hver post i samlingen og viser dem i konsolloggen.

Hvis trinnene ovenfor utføres riktig, vil alle dokumentene i ansattesamlingen 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);})});