【发布时间】:2012-07-17 07:26:07
【问题描述】:
是否有可能检测到数据库没有与 Mongoose 一起运行?
【问题讨论】:
标签: javascript node.js mongodb mongoose
是否有可能检测到数据库没有与 Mongoose 一起运行?
【问题讨论】:
标签: javascript node.js mongodb mongoose
直截了当对我来说很好:
mongoose.Connection.STATES.connected === mongoose.connection.readyState
【讨论】:
你可以通过简单的检查来判断猫鼬是否已经连接
mongoose.connection.readyState
0 = no
1 = yes
【讨论】:
我建议使用open 和error 事件来检查您是否可以连接到数据库。这是我在所有项目中使用的一个简单示例,用于仔细检查我是否已连接。
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');
【讨论】:
显然 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);
});
【讨论】: