使用node.js和本地promise来构build堆栈跟踪

我们有一个明确的API应用程序,我们利用ES6的原生承诺。

我们目前的设置为简单的获取将是

//controller.js snippet get: function (req, res, next) { repository.getObject() .then(function (response) { return res.status(200).json(response); }).catch(function (err) { return next(err); }); } //repository.js snippet getObject:function(){ return new Promise(function (resolve, reject) { var sql = SELECT * FROM table; db.query(sql, function (err, result) { if (err) return reject(err); return resolve(result.rows)); }); }); } //app.js snippet app.use(function (err, req, res, next) { logger.log(err, err.stack) }); 

我们所看到的问题是被logging的err.stack仅包含来自db节点模块的跟踪。 我想跟踪包括controller.js称为repository.js的事实。

而不是拒绝(错误)我知道我可以拒绝(新的错误(错误)),但我不知道如果这是一个很好的做法,有我们的应用程序

我希望这能帮到您。

调用next()next(err)指示当前处理程序已完成,处于何种状态。 下一个(err)跳过 除了那些被设置来处理错误的链中的所有剩余的处理程序。

所以你的controller.js需要像这样 –

 //controller.js snippet get: function (err, req, res, next) { repository.getObject() .then(function (response) { return res.status(200).json(response); }).catch(function (err) { return next(err); }); }