Bluebird NPM: Υπόσχεση Bluebird JS με Παράδειγμα

Τι είναι το Bluebird JS;

Το Bluebird JS είναι μια πλήρως εξοπλισμένη βιβλιοθήκη Promise για JavaΓραφή. Το ισχυρότερο χαρακτηριστικό του Bluebird είναι ότι σας επιτρέπει να «υποσχεθείτε» άλλες μονάδες Node προκειμένου να τις χρησιμοποιήσετε ασύγχρονα. Το Promisify είναι μια έννοια που εφαρμόζεται στις λειτουργίες επανάκλησης. Αυτή η έννοια χρησιμοποιείται για να διασφαλιστεί ότι κάθε συνάρτηση επανάκλησης που καλείται επιστρέφει κάποια τιμή.

Έτσι εάν NodeJS Η ενότητα περιέχει μια συνάρτηση επανάκλησης που δεν επιστρέφει μια τιμή και εάν Υποσχεθούμε τη λειτουργική μονάδα κόμβου, όλες οι συναρτήσεις σε αυτήν τη συγκεκριμένη λειτουργική μονάδα κόμβου θα τροποποιηθούν αυτόματα για να διασφαλιστεί ότι επιστρέφει μια τιμή.

Έτσι, μπορείτε να χρησιμοποιήσετε το BlueBird για να το φτιάξετε MongoDB η μονάδα λειτουργεί ασύγχρονα. Αυτό απλώς προσθέτει άλλο ένα επίπεδο ευκολίας κατά τη σύνταξη εφαρμογών Node.js.

Θα δούμε ένα παράδειγμα του τρόπου χρήσης της ενότητας bluebird.

Το παράδειγμά μας θα δημιουργήσει πρώτα μια σύνδεση με τη "Συλλογή Υπαλλήλων" στη βάση δεδομένων "EmployeeDB". Εάν δημιουργηθεί σύνδεση "τότε", τότε θα λάβει όλες τις εγγραφές της συλλογής και θα τις εμφανίσει στην κονσόλα αναλόγως.

Πώς να δημιουργήσετε υποσχέσεις με τη βιβλιοθήκη Bluebird JS

Εδώ είναι το βήμα προς βήμα παράδειγμα προς δημιουργούν υποσχέσεις με τη βιβλιοθήκη Bluebird JS:

Βήμα 1) Εγκατάσταση των μονάδων NPM

Για να χρησιμοποιήσετε το Bluebird μέσα από μια εφαρμογή Node, απαιτείται η λειτουργική μονάδα Bluebird. Για να εγκαταστήσετε τη μονάδα Bluebird, εκτελέστε την παρακάτω εντολή

npm εγκατάσταση bluebird

Βήμα 2) Συμπεριλάβετε μονάδες Bluebird

Το επόμενο βήμα είναι να συμπεριλάβετε τη μονάδα bluebird στον κώδικά σας και να υποσχεθείτε ολόκληρη MongoDB μονάδα μέτρησης. Με τον όρο promisify, εννοούμε ότι το bluebird θα διασφαλίσει ότι κάθε μέθοδος που ορίζεται στο MongoDB η βιβλιοθήκη επιστρέφει μια υπόσχεση.

Δημιουργήστε Υποσχέσεις με τη Βιβλιοθήκη Bluebird JS

Επεξήγηση κώδικα: -

  1. Η εντολή require χρησιμοποιείται για να συμπεριλάβει τη βιβλιοθήκη Bluebird.
  2. Χρησιμοποιήστε τη μέθοδο .promisifyAll() του Bluebird για να δημιουργήσετε μια ασύγχρονη έκδοση κάθε μεθόδου MongoDB η ενότητα παρέχει. Αυτό διασφαλίζει ότι κάθε μέθοδος του MongoDB Η μονάδα θα εκτελείται στο παρασκήνιο και θα διασφαλίζει ότι επιστρέφεται μια υπόσχεση για κάθε κλήση μεθόδου στο MongoDB βιβλιοθήκη.

Βήμα 3) Συνδεθείτε στη βάση δεδομένων

Το τελευταίο βήμα είναι να συνδεθείτε στη βάση δεδομένων μας, να ανακτήσετε όλες τις εγγραφές στη συλλογή μας και να τις εμφανίσετε στο αρχείο καταγραφής της κονσόλας μας.

Δημιουργήστε Υποσχέσεις με τη Βιβλιοθήκη Bluebird JS

Επεξήγηση κώδικα: -

  1. Θα παρατηρήσετε ότι χρησιμοποιούμε τη μέθοδο "connectAsync" αντί της κανονικής μεθόδου σύνδεσης για τη σύνδεση στο βάσεις δεδομένων. Το Bluebird στην πραγματικότητα προσθέτει τη λέξη-κλειδί Async σε κάθε μέθοδο στο MongoDB βιβλιοθήκη για να διακρίνει τις κλήσεις που επιστρέφουν υποσχέσεις και αυτές που δεν δίνουν. Επομένως, δεν υπάρχει καμία εγγύηση ότι οι μέθοδοι χωρίς τη λέξη Async θα επιστρέψουν μια τιμή.
  2. Παρόμοια με τη μέθοδο connectAsync, χρησιμοποιούμε τώρα τη μέθοδο findAsync για να επιστρέψουμε όλες τις εγγραφές στη συλλογή "Υπάλληλος" του mongoDB.
  3. Τέλος, εάν το findAsync επιστρέψει μια επιτυχημένη υπόσχεση, τότε ορίζουμε ένα μπλοκ κώδικα για επανάληψη σε κάθε εγγραφή της συλλογής και εμφάνιση στο αρχείο καταγραφής της κονσόλας.

Εάν τα παραπάνω βήματα εκτελούνται σωστά, όλα τα έγγραφα της συλλογής Υπαλλήλων θα εμφανιστούν στην κονσόλα, όπως φαίνεται στην παρακάτω έξοδο.

Δημιουργήστε Υποσχέσεις με τη Βιβλιοθήκη Bluebird JS

Εδώ είναι ο κωδικός για την αναφορά σας:

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