10

是否可以检测到数据库未与 Mongoose 一起运行?

4

4 回答 4

21

您可以通过简单地检查来判断猫鼬是否已经连接

mongoose.connection.readyState
0 = no
1 = yes
于 2012-07-28T23:13:07.987 回答
18

我建议使用openanderror事件来检查您是否可以连接到数据库。这是我所有项目中使用的一个简单示例,用于仔细检查我是否已连接。

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');
于 2012-07-18T15:49:43.940 回答
10

直截了当对我来说很好:

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

于 2013-08-17T12:58:40.213 回答
4

显然 Mongoose 它自己不会抛出任何异常。

所以你可以使用 Mongo DB Native NodeJS Driver:

因此,您可以执行以下操作:

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);
});
于 2012-07-18T15:03:09.080 回答