2016-09-20 11 views
5

Ich habe MongoDB in meiner App.Überprüfen Sie, ob MongoDB verbunden ist

Ich möchte überprüfen, ob mongoDB angeschlossen ist, bevor ich die App höre.

Ist es der beste Weg dafür?

Das ist mein server.js Datei:

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 läuft getDbObject. getDbObject verbindet sich mit mongoDB und gibt ein Objekt zurück: verbunden (wahr/falsch), db (dbObject oder Fehler).

Dann isConnected lösen/ablehnen von verbundenen Eigenschaft.

Dies ist mongoDb.js Datei:

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

} 

Jede Hilfe dankbar!

Antwort

4

Es gibt mehrere Möglichkeiten, hängt davon ab, wie Ihre DB konfiguriert ist. für eine eigenständige (einzelne) Instanz. Sie können so etwas wie dieses

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

verwenden, wenn Sie eine gemeinsame Umgebung mit Config-Server und mehrere Scherben haben, können Sie verwenden

db.serverConfig.isConnected() 
Verwandte Themen