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.
- Используйте метод .promisifyAll () от Bluebird для создания асинхронной версии каждого метода, предоставляемого модулем 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); }) });