2

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

需要处理的主要错误是连接错误、无法连接或丢失连接。这是我迄今为止尝试过的示例。

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 源

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);
});
4

1 回答 1

1

我认为这对你不起作用:

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

因为这是在 Github 上发布的一个问题,最终得到了解决,请看这里......所以你现在可以发现它有任何问题(我在我的一些编码中以这种方式使用它并且它正在工作!)。

您可以走得更远,并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! ");
    }
});

...知道错误发生在哪里。这对我来说真的很好。

于 2015-01-15T02:22:43.860 回答