节点mongodb错误冒泡&传播

时间:2016-03-07 20:33:58

标签: javascript node.js mongodb error-handling

我遇到问题Node.js我的MongoClient.connect()函数需要将抛出的错误传播回main;但是,错误会丢失并被解释为uncaughtException

var ErrorHandler = require('./bin/lib/error.js').ErrorHandler;

//throw new ErrorHandler('Throwing something random.', 'BadRequest', 400); // <-- this works, and throws error as expected!!

// verify that user doesn't already exist.
MongoClient.connect('mongodb://localhost:27017/testdb', function(err, db){
    if (err) throw new Error( err );                    
    db.collection('users')
      .findOne({'email': useremail}, function(err,doc){
            throw new ErrorHandler('User already exists!', 'BadRequest', 400); // <-- this does not work, and error gets lost as an <anonymous> function error event
       });                              
});

我假设错误正在丢失,因为我提供给.findOne()的内部回调不知道我为扩展核心而创建的ErrorHandler函数{ {1}}类;但是,我不知道如何纠正问题,并允许我仍然使用Error调用ErrorHandler()调用的结果中的自定义mongodb函数来调用错误。任何想法如何让错误通过回调传播回来,所以我可以从脚本中调用mongodb.open()&#34; required&#34;在?

更新

实例化整个服务器对象的主ErrorHandler()文件调用底部的以下内容来监听其他server.jsuncaughtExceptions事件:

SIGTERM

当错误丢失时,它会传播到此处。并在process.on('uncaughtException', function(err){ console.error(err.stack); n.server.close(); }).on('SIGTERM', function(){ n.server.close(); }); 块中执行,按预期记录整个errorstack,它只是没有被捕获到我希望它被捕获到我的服务器对象中。

实际.on('uncaughtException',...在此实例中打印以下内容:

console.error(err.stack)

由于

0 个答案:

没有答案