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);
});
答案 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! ");
}
});
...知道错误发生的地方。这对我来说非常好。