Bluebird NPM : promesse Bluebird JS avec exemple

Qu’est-ce que Bluebird JS ?

Bluebird JS est une bibliothèque Promise complète pour JavaScript. La fonctionnalité la plus puissante de Bluebird est qu'il permet de « promettre » d'autres modules Node afin de les utiliser de manière asynchrone. Promisify est un concept appliqué aux fonctions de rappel. Ce concept est utilisé pour garantir que chaque fonction de rappel appelée renvoie une valeur.

Donc si un NodeJS module contient une fonction de rappel qui ne renvoie pas de valeur, et si nous promettons le module de nœud, toutes les fonctions de ce module de nœud spécifique seraient automatiquement modifiées pour garantir qu'il renvoie une valeur.

Vous pouvez donc utiliser BlueBird pour créer le MongoDB le module s’exécute de manière asynchrone. Cela ajoute simplement un autre niveau de facilité lors de l'écriture d'applications Node.js.

Nous examinerons un exemple d'utilisation du module bluebird.

Notre exemple va d’abord établir une connexion à la « Collection Employee » dans la base de données « EmployeeDB ». Si la connexion « alors » est établie, elle obtiendra alors tous les enregistrements de la collection et les affichera dans la console en conséquence.

Comment générer des promesses avec la bibliothèque Bluebird JS

Voici l'exemple étape par étape pour générer des promesses avec la bibliothèque Bluebird JS :

Étape 1) Installation des modules NPM

Pour utiliser Bluebird depuis une application Node, le module Bluebird est requis. Pour installer le module Bluebird, exécutez la commande ci-dessous

npm installer bluebird

Étape 2) Inclure les modules Bluebird

L'étape suivante consiste à inclure le module bluebird dans votre code et à promettre l'intégralité de MongoDB module. Par promis, nous entendons que bluebird veillera à ce que chaque méthode définie dans le MongoDB la bibliothèque renvoie une promesse.

Générez des promesses avec la bibliothèque Bluebird JS

Explication du code : -

  1. La commande require est utilisée pour inclure la bibliothèque Bluebird.
  2. Utilisez la méthode .promisifyAll() de Bluebird pour créer une version asynchrone de chaque méthode MongoDB module fournit. Cela garantit que chaque méthode du MongoDB Le module s'exécutera en arrière-plan et garantira qu'une promesse est renvoyée pour chaque appel de méthode dans le MongoDB bibliothèque.

Étape 3) Connectez-vous à la base de données

La dernière étape consiste à se connecter à notre base de données, à récupérer tous les enregistrements de notre collection et à les afficher dans le journal de notre console.

Générez des promesses avec la bibliothèque Bluebird JS

Explication du code : -

  1. Vous remarquerez que nous utilisons la méthode « connectAsync » au lieu de la méthode de connexion normale pour se connecter au base de données. Bluebird ajoute en fait le mot-clé Async à chaque méthode dans le MongoDB bibliothèque permettant de distinguer les appels qui renvoient des promesses et ceux qui n'en renvoient pas. Il n'y a donc aucune garantie que les méthodes sans le mot Async renvoient une valeur.
  2. Semblable à la méthode connectAsync, nous utilisons désormais la méthode findAsync pour renvoyer tous les enregistrements de la collection mongoDB 'Employee'.
  3. Enfin, si findAsync renvoie une promesse réussie, nous définissons ensuite un bloc de code pour parcourir chaque enregistrement de la collection et les afficher dans le journal de la console.

Si les étapes ci-dessus sont effectuées correctement, tous les documents de la collection Employee seront affichés dans la console, comme indiqué dans le résultat ci-dessous.

Générez des promesses avec la bibliothèque Bluebird JS

Voici le code pour votre référence:

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