Урок за обещания на Bluebird

Съдържание:

Anonim

Bluebird е пълнофункционална библиотека Promise за JavaScript. Най-силната характеристика на Bluebird е, че ви позволява да "обещаете" други модули на Node, за да ги използвате асинхронно. Promisify е концепция, приложена към функциите за обратно извикване. Тази концепция се използва, за да се гарантира, че всяка функция за обратно извикване, която се извиква, връща някаква стойност.

Така че, ако Node JS модул съдържа функция за обратно извикване, която не връща стойност, и ако ние Promisify node модул, всички функции в този специфичен модул възел ще бъдат автоматично модифицирани, за да се гарантира, че връща стойност.

Така че можете да използвате BlueBird, за да накарате модула MongoDB да работи асинхронно. Това просто добавя още едно ниво на лекота при писане на приложения Node.js.

Ще разгледаме пример за това как да използваме модула bluebird.

Нашият пример първо ще установи връзка с „Колекцията на служителите“ в базата данни „EmployeeDB“. Ако се установи връзка "тогава", тя ще получи всички записи в колекцията и ще ги покаже в конзолата съответно.

Генериране на обещания с библиотеката BlueBird

Стъпка 1) Инсталиране на NPM модулите

За да използвате Bluebird от приложението Node, модулът Bluebird е необходим. За да инсталирате модула Bluebird, изпълнете командата по-долу

npm инсталирайте bluebird

Стъпка 2) Следващата стъпка е да включите модула bluebird във вашия код и да обезпечите целия модул MongoDB. Под promisify имаме предвид, че bluebird ще гарантира, че всеки метод, дефиниран в библиотеката MongoDB, връща обещание.

Обяснение на кода: -

  1. Командата require се използва за включване на библиотеката Bluebird.
  2. Използвайте метода .promisifyAll () на Bluebird, за да създадете асинхронна версия на всеки метод, който модулът MongoDB предоставя. Това гарантира, че всеки метод от модула MongoDB ще работи във фонов режим и гарантира, че обещанието се връща за всяко извикване на метод в библиотеката MongoDB.

Стъпка 3) Последната стъпка е да се свържете с нашата база данни, да извлечете всички записи в нашата колекция и да ги покажете в нашия конзолен дневник.

Обяснение на кода: -

  1. Ще забележите, че ние използваме метода "connectAsync" вместо нормалния метод за свързване за свързване към базата данни. Bluebird всъщност добавя ключовата дума Async към всеки метод в библиотеката на MongoDB, за да различава онези повиквания, които връщат обещания и тези, които не го правят. Така че няма гаранция, че методите без думата Async ще върнат стойност.
  2. Подобно на метода connectAsync, сега използваме метода findAsync, за да върнем всички записи в колекцията mongoDB „Служител“.
  3. И накрая, ако findAsync връща успешно обещание, ние тогава дефинираме блок от код, който да прегледа всеки запис в колекцията и да ги покаже в конзолния дневник.

Ако горните стъпки са изпълнени правилно, всички документи в колекцията на служителите ще бъдат показани в конзолата, както е показано в изхода по-долу.

Ето кода за справка

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);})});