Bluebird NPM: Bluebird JS の約束と例
ブルーバードJSとは何ですか?
Bluebird JSは、フル機能を備えたPromiseライブラリです。 Javaスクリプト。Bluebird の最も強力な機能は、他の Node モジュールを「promisify」して非同期的に使用できることです。promisify はコールバック関数に適用される概念です。この概念は、呼び出されるすべてのコールバック関数が何らかの値を返すことを保証するために使用されます。
したがって、 NodeJS モジュールには値を返さないコールバック関数が含まれており、ノード モジュールを Promisify すると、その特定のノード モジュール内のすべての関数が値を返すように自動的に変更されます。
したがって、BlueBird を使用して、 MongoDB モジュールは非同期で実行されます。これにより、Node.js アプリケーションの作成がさらに簡単になります。
bluebird モジュールの使用方法の例を見ていきます。
この例では、まず「EmployeeDB」データベース内の「Employee collection」への接続を確立します。 「then」接続が確立されると、コレクション内のすべてのレコードが取得され、それに応じてコンソールに表示されます。
Bluebird JS ライブラリを使用して Promise を生成する方法
以下にステップバイステップの例を示します。 約束を生成する Bluebird JS ライブラリを使用:
ステップ 1) NPM モジュールのインストール
Node アプリケーション内から Bluebird を使用するには、Bluebird モジュールが必要です。 Bluebird モジュールをインストールするには、以下のコマンドを実行します。
npmでブルーバードをインストール
ステップ 2) Bluebird モジュールを含める
次のステップは、コードに bluebird モジュールを組み込み、全体の機能を約束することです。 MongoDB モジュール。約束するとは、bluebird が、 MongoDB ライブラリはpromiseを返します。
コードの説明:-
- require コマンドは、Bluebird ライブラリをインクルードするために使用されます。
- Bluebirdの.promisifyAll()メソッドを使用して、すべてのメソッドの非同期バージョンを作成します。 MongoDB モジュールが提供します。これにより、 MongoDB モジュールはバックグラウンドで実行され、メソッド呼び出しごとに Promise が返されるようにします。 MongoDB としょうかん。
ステップ 3) データベースに接続する
最後のステップでは、データベースに接続し、コレクション内のすべてのレコードを取得して、コンソール ログに表示します。
コードの説明:-
- 通常の接続方法ではなく「connectAsync」メソッドを使用していることに気づくでしょう。 データベースBluebirdは実際に各メソッドにAsyncキーワードを追加します。 MongoDB ライブラリは、promise を返す呼び出しと返さない呼び出しを区別します。そのため、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); }) });