Підручник із обіцянок Bluebird

Зміст:

Anonim

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

Отже, якщо модуль Node JS містить функцію зворотного виклику, яка не повертає значення, і якщо ми промісифікуємо модуль вузла, усі функції в цьому конкретному модулі вузла будуть автоматично модифіковані для забезпечення повернення значення.

Таким чином, ви можете використовувати BlueBird, щоб модуль MongoDB працював асинхронно. Це просто додає ще одного рівня простоти при написанні програм Node.js.

Ми розглянемо приклад використання модуля bluebird.

Наш приклад спочатку встановить підключення до "колекції співробітників" у базі даних "EmployeeDB". Якщо встановлено підключення "then", він отримає всі записи в колекції та відобразить їх у консолі відповідно.

Створення обіцянок за допомогою бібліотеки BlueBird

Крок 1) Встановлення модулів NPM

Щоб використовувати Bluebird із програми Node, потрібен модуль Bluebird. Щоб встановити модуль Bluebird, виконайте наведену нижче команду

npm встановити

Крок 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 'Employee'.
  3. Нарешті, якщо findAsync повертає успішне обіцянку, ми визначаємо блок коду, який перебирає кожен запис у колекції та відображає їх у журналі консолі.

Якщо вищевказані кроки виконано належним чином, усі документи з колекції Employee відображатимуться на консолі, як показано в результатах нижче.

Ось код для довідки

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