sql >> データベース >  >> NoSQL >> MongoDB

Node.jsはmongoskinで約束します

    bluebirdを使用すると、モジュール全体をそのように約束できます。

    var Promise = require("bluebird");
    var mongoskin = require("mongoskin");
    Object.keys(mongoskin).forEach(function(key) {
      var value = mongoskin[key];
      if (typeof value === "function") {
        Promise.promisifyAll(value);
        Promise.promisifyAll(value.prototype);
      }
    });
    Promise.promisifyAll(mongoskin);
    

    これは、アプリケーションコードのどこでもなく、アプリケーションの1か所で一度だけ実行する必要があります。

    その後は、Asyncサフィックスを除いて通常のメソッドを使用し、コールバックを渡さないでください:

    req.db.collection('users').find().toArrayAsync()
      .then(function(doc) {
        if (doc) {
          return req.db.collection('users').find().toArrayAsync();
        }
      })
      .then(function(doc) {
        if (doc) {
          return req.db.collection('users').find().toArrayAsync();
        }
      })
      .then(function(doc) {
        if (doc) {
          return req.db.collection('users').find().toArrayAsync();
        }
      });
    

    繰り返しになりますが、

    のような関数を呼び出すと
    foo(a, b, c, function(err, result) {
        if (err) return console.log(err);
        //Code
    });
    

    約束を返すバージョンは次のように呼ばれます:

    fooAsync(a, b, c).then(...)
    

    (キャッチされなかったエラーは自動的にログに記録されるため、ログに記録するだけの場合はチェックする必要はありません)



    1. ClusterControl1.4のMongoDB機能

    2. すべてのサブドキュメントのObjectIdを作成していないMongoose自己参照スキーマ

    3. MongoDBとMongooseの違い

    4. マングースのスキーマにないフィールドを追加する