Bluebird to w pełni funkcjonalna biblioteka Promise dla JavaScript. Najsilniejszą cechą Bluebird jest to, że pozwala on „obiecywać” inne moduły Node, aby używać ich asynchronicznie. Promisify to koncepcja stosowana do funkcji zwrotnych. Ta koncepcja służy do zapewnienia, że każda wywoływana funkcja zwrotna zwraca jakąś wartość.
Więc jeśli moduł Node JS zawiera funkcję zwrotną, która nie zwraca wartości, i jeśli Promisify moduł węzła, wszystkie funkcje w tym konkretnym module węzła zostaną automatycznie zmodyfikowane, aby zapewnić, że zwraca wartość.
Możesz więc użyć BlueBird, aby moduł MongoDB działał asynchronicznie. To tylko dodaje kolejny poziom łatwości podczas pisania aplikacji Node.js.
Przyjrzymy się przykładowi wykorzystania modułu bluebird.
Nasz przykład najpierw nawiąże połączenie z „Kolekcją pracowników” w bazie danych „EmployeeDB”. Jeśli zostanie nawiązane połączenie „to”, pobierze wszystkie rekordy w kolekcji i odpowiednio je wyświetli w konsoli.
Generowanie obietnic za pomocą biblioteki BlueBird
Krok 1) Instalacja modułów NPM
Aby korzystać z Bluebird z poziomu aplikacji Node, wymagany jest moduł Bluebird. Aby zainstalować moduł Bluebird, uruchom poniższe polecenie
npm zainstaluj bluebird
Krok 2) Następnym krokiem jest włączenie modułu bluebird do kodu i obietnica całego modułu MongoDB. Przez promisify rozumiemy, że bluebird zapewni, że każda metoda zdefiniowana w bibliotece MongoDB zwróci obietnicę.
Objaśnienie kodu: -
- Polecenie require służy do dołączania biblioteki Bluebird.
- Użyj metody .promisifyAll () firmy Bluebird, aby utworzyć wersję asynchroniczną każdej metody udostępnianej przez moduł MongoDB. Gwarantuje to, że każda metoda modułu MongoDB będzie działać w tle i zapewnia, że obietnica jest zwracana dla każdego wywołania metody w bibliotece MongoDB.
Krok 3) Ostatnim krokiem jest połączenie się z naszą bazą danych, pobranie wszystkich rekordów z naszej kolekcji i wyświetlenie ich w dzienniku konsoli.
Objaśnienie kodu: -
- Zauważysz, że używamy metody „connectAsync” zamiast normalnej metody połączenia do łączenia się z bazą danych. Bluebird w rzeczywistości dodaje słowo kluczowe Async do każdej metody w bibliotece MongoDB, aby odróżnić wywołania, które zwracają obietnice, i te, które nie. Nie ma więc gwarancji, że metody bez słowa Async zwrócą wartość.
- Podobnie jak w przypadku metody connectAsync, teraz używamy metody findAsync do zwracania wszystkich rekordów z kolekcji „Employee” mongoDB.
- Na koniec, jeśli findAsync zwróci pomyślną obietnicę, definiujemy następnie blok kodu do iteracji przez każdy rekord w kolekcji i wyświetlamy go w dzienniku konsoli.
Jeśli powyższe kroki zostaną wykonane prawidłowo, wszystkie dokumenty w kolekcji Pracownik zostaną wyświetlone w konsoli, jak pokazano na poniższym wyniku.
Oto kod w celach informacyjnych
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);})});