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

非同期コールバックでのみ使用可能になるオブジェクトをエクスポートするにはどうすればよいですか?

    コメントで提案 elclanrs 、promiseをエクスポートすることです:

    // database.js
    var MongoClient = require('mongodb').MongoClient,
        Q = require('q'),
        connect = Q.nbind(MongoClient.connect, MongoClient);
    
    var promise = connect(/* url */);        
    
    module.exports = {
      connect: function () {
        return promise;
      }
    }
    
    // app.js
    var database = require('./database');
    
    database.connect()
      .then(function (db) {
        app.get('/', function (req, res) {
          db.collection(/* … */);
        });
      })
      .catch(function (err) {
        console.log('Error connecting to DB:', err);
      })
      .done();
    

    (私は素晴らしいQ を使用しています ここにライブラリがあります。)

    以下は、歴史のために残された私の答えの古いバージョンです(ただし、promiseを使用したくない場合は、その道を進む代わりに、マットの答え

    その欠点は、require('database.js)を実行するたびに接続が開かれることです。 (残念!)

    // DO NOT USE: left for the sake of history
    
    // database.js
    var MongoClient = require('mongodb').MongoClient;
    
    function connect(cb) {
      MongoClient.connect(/* the URL */, cb);
    }
    
    module.exports = {
      connect: connect
    }
    
    // app.js
    var database = require('./database');
    
    database.connect(function (err, db) {
      app.get('/', function (req, res) {
          db.collection(/* … */);
      });
    });
    


    1. 1回の呼び出しで複数のMongoDBドキュメントを作成および更新します

    2. .NET Core3のRedisCacheでは、Stack Exchangeパッケージを使用する必要がありますか?

    3. Redisと値のクエリ

    4. MongoDB-エラー:保存する前にドキュメントに_idが必要です