2012-07-18 53 views

回答

18

我會建議使用openerror事件,以檢查是否可以連接到數據庫。這是一個簡單的例子,用於我的所有項目中,以檢查我是否已連接。

var mongoose = require('mongoose'); 

mongoose.connection.on('open', function (ref) { 
    console.log('Connected to mongo server.'); 
}); 
mongoose.connection.on('error', function (err) { 
    console.log('Could not connect to mongo server!'); 
    console.log(err); 
}); 

mongoose.connect('mongodb://localhost/mongodb'); 
+0

是的,這更好。只記得使用分號「;」 :) – 2012-07-18 17:03:18

+1

謝謝你的回答,這是我需要:) – Charles 2012-07-18 21:05:13

4

顯然貓鼬它自己不會拋出任何例外。

所以,你可以使用蒙戈DB本地的NodeJS司機:

因此,這裏是你可以做什麼:

var mongoose = require('mongoose'); 

var Db = require('mongodb').Db, 
    Server = require('mongodb').Server; 

console.log(">> Connecting to mongodb on 127.0.0.1:27017"); 

var db = new Db('test', new Server("127.0.0.1", 27017, {})); 

db.open(function(err, db) { 
    console.log(">> Opening collection test"); 
    try { 
     db.collection('test', function(err, collection) { 
      console.log("dropped: "); 
      console.dir(collection); 
     }); 
    } 
    catch (err) { 
     if (!db) { 
      throw('MongoDB server connection error!'); 
     } 
     else { 
      throw err; 
     } 
    } 
}); 

process.on('uncaughtException', function(err) { 
    console.log(err); 
}); 
+1

感謝您的回答:) – Charles 2012-07-18 21:05:37

20

如果你可以告訴貓鼬是通過簡單地檢查

mongoose.connection.readyState 
0 = no 
1 = yes 
+11

實際上有4種不同的狀態。除了上面提到的兩個,還有2 =「連接」和3 =「斷開連接」。看到這裏http://mongoosejs.com/docs/api.html#connection_Connection-readyState – Risadinha 2012-09-25 14:23:01

8

的直截了當工作正常,我已經連接與否:

mongoose.Connection.STATES.connected === mongoose.connection.readyState

+0

謝謝!我一直在尋找常數。這比使用== 1更清潔 – koga73 2017-05-04 19:02:34