【问题标题】:Mongoose detect database not readyMongoose 检测数据库未准备好
【发布时间】:2012-07-17 07:26:07
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    直截了当对我来说很好:

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

    【讨论】:

    • 谢谢!我一直在寻找常数。这比使用 == 1 更干净
    【解决方案2】:

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

    mongoose.connection.readyState
    0 = no
    1 = yes
    

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 是的,效果更好。请记住使用分号“;” :)
    • 谢谢你的回答,这正是我需要的:)
    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      相关资源
      最近更新 更多