Bluebird - это полнофункциональная библиотека Promise для JavaScript. Самая сильная особенность Bluebird заключается в том, что он позволяет вам «обещать» другие модули Node, чтобы использовать их асинхронно. Promisify - это концепция, применяемая к функциям обратного вызова. Эта концепция используется, чтобы гарантировать, что каждая вызываемая функция обратного вызова возвращает какое-либо значение.
Таким образом, если модуль Node JS содержит функцию обратного вызова, которая не возвращает значение, и если мы обещаем модуль узла, все функции в этом конкретном модуле узла будут автоматически изменены, чтобы гарантировать, что он возвращает значение.
Таким образом, вы можете использовать BlueBird для асинхронной работы модуля MongoDB. Это просто добавляет еще один уровень легкости при написании приложений Node.js.
Мы рассмотрим пример использования модуля bluebird.
В нашем примере сначала будет установлено соединение с «Коллекцией сотрудников» в базе данных «EmployeeDB». Если установлено «тогда» соединение, он получит все записи в коллекции и отобразит их в консоли соответственно.
Генерация обещаний с помощью библиотеки BlueBird
Шаг 1) Установка модулей NPM
Чтобы использовать Bluebird из приложения Node, требуется модуль Bluebird. Чтобы установить модуль Bluebird, выполните следующую команду
npm установить bluebird
Шаг 2) Следующим шагом будет включение модуля bluebird в ваш код и обещание всего модуля MongoDB. Под обещанием мы подразумеваем, что bluebird гарантирует, что каждый метод, определенный в библиотеке MongoDB, возвращает обещание.
Пояснение к коду: -
- Команда require используется для включения библиотеки Bluebird.
- Используйте метод Bluebird .promisifyAll () для создания асинхронной версии каждого метода, предоставляемого модулем MongoDB. Это гарантирует, что каждый метод модуля MongoDB будет работать в фоновом режиме, и гарантирует, что обещание будет возвращено для каждого вызова метода в библиотеке MongoDB.
Шаг 3) Последний шаг - подключиться к нашей базе данных, получить все записи в нашей коллекции и отобразить их в журнале консоли.
Пояснение к коду: -
- Вы заметите, что мы используем метод connectAsync вместо обычного метода подключения для подключения к базе данных. Bluebird фактически добавляет ключевое слово Async к каждому методу в библиотеке MongoDB, чтобы различать те вызовы, которые возвращают обещания, и те, которые не возвращают. Таким образом, нет гарантии, что методы без слова Async вернут значение.
- Подобно методу connectAsync, теперь мы используем метод findAsync для возврата всех записей в коллекции mongoDB 'Employee'.
- Наконец, если 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);})});