听取“mongojs”连接错误

时间:2013-09-11 07:13:50

标签: node.js mongodb mongojs

Mongojs是mongodb本地库的瘦包装器,但唯一的问题是我无法监听错误?

需要处理的主要错误是连接错误,无法连接或丢失连接。 这是我到目前为止尝试过的例子。

var mongojs = require('mongojs');

var db = mongojs.connect('reallyRandomStringShouldGiveError', ['sessions', 'unknown']);

// This does not work
db.on('error', function(err) {
        console.log('Catch ', err);
});

db.sessions.insert({ a: 1 });

db.unkknown.find({ a: 1}, function (err, result) {
        console.log(err, result);
});

来自“mongojs”库的代码应该再次发出错误mongojs source

var connect = function(config, collections) {
    var connectionString = parseConfig(config);

    var ondb = thunky(function(callback) {
        mongodb.Db.connect(connectionString, function(err, db) {
            if (err) return callback(err);
            that.client = db;
            db.on('error', function(err) {
                process.nextTick(function() {
                                    // Errors seems to be emitted again
                    that.emit('error', err);
                });
            });
            callback(null, db);
        });
    });
    var that = new Database(ondb);

    .....

    return that;
};

添加进程侦听器不是最佳选择。

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

1 个答案:

答案 0 :(得分:1)

我认为这对你不起作用:

db.on('error', function(err) {
    console.log('Catch ', err);
});

因为这是一个在Github上发布的问题,终于解决了,看看here ...所以你现在可以解决任何问题(我在我的一些编码中使用它,它正在工作!)。

您可以更进一步,并在回调中传递err参数,例如:

db.collection.insert( { foo: "foo_value" }, function(err) {
    if (err) {
        console.log(" Woops! The error took place here... ");
    } else {
        console.log(" Everything went neat! ");
    }
});

...知道错误发生的地方。这对我来说非常好。