2016-09-20 36 views
5

私のアプリにmongoDBがあります。mongoDBが接続されていることを確認してください。

アプリを聞く前に、mongoDBが接続されているかどうか確認したいと思います。

これを実行する最善の方法ですか?

これは私のserver.jsファイルです:

var express = require('express'); 
var mongoDb = require('./mongoDb'); 
var app = express(); 

init(); 

function init() { 
    if (mongoDb.isConnected()) { 
     app.listen(8080, '127.0.0.1'); 
    } 
    else { 
     console.log('error'); 
    } 
} 

isConnected実行getDbObjectgetDbObjectはmongoDBに接続し、オブジェクト( )(true/false)、db(dbObjectまたはerror)を返します。

次に、isConnected接続プロパティで解決/拒否します。

これはmongoDb.jsファイルです:

//lets require/import the mongodb native drivers. 
var mongodb = require('mongodb'); 
// Connection URL. This is where your mongodb server is running. 
var url = 'mongodb://localhost:27017/myDb'; 

var connectingDb; // promise 

//We need to work with "MongoClient" interface in order to connect to a mongodb server. 
var MongoClient = mongodb.MongoClient; 

init(); 

module.exports = { 
    isConnected: isConnected 
} 

// Use connect method to connect to the Server 
function init() { 
    connectingDb = new Promise(
    function (resolve, reject) { 
     MongoClient.connect(url, function (err, db) { 
     if (err) { 
      console.log('Unable to connect to the mongoDB server. Error:', err); 
      reject(err); 
     } 
     else { 
      console.log('Connection established to', url); 

      //Close connection 
      //db.close(); 
      resolve(db); 
     } 
     }); 

    } 
); 
} 

function getDbObject() { 
    return connectingDb().then(myDb => { 
             return { 
              connected: true, 
              db: myDb 
             } 
             } 
          ) 
         .catch(err => { 
             return { 
              connected: false, 
              db: err 
             } 
             } 
          ) 
} 

function isConnected() { 
    return new Promise(
     function(resolve, reject) { 
      var obj = getDbObject(); 
      if (obj.connected == true) { 
      console.log('success'); 
      resolve(true); 
      } 
      else { 
      console.log('error'); 
      reject(false); 
      } 
     } 
    ) 

} 

すべてのヘルプ感謝!

答えて

4

DBがどのように構成されているかによって、複数の方法があります。スタンドアロン(単一)インスタンスの場合あなたが設定サーバと複数の断片を持つ共有環境を持っている場合は、あなたが使用することができます。この

Db.connect(configuration.url(), function(err, db) { 
    assert.equal(null, err); 

ようなものを使用することができます

db.serverConfig.isConnected() 
関連する問題