mongoose检测数据库没有准备好

是否有可能检测到数据库没有运行Mongoose?

我会build议使用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'); 

你可以告诉mongoose是否已经连接或不通过简单的检查

 mongoose.connection.readyState 0 = no 1 = yes 

直线前进适合我:

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

显然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); });