我有以下简化的中间件功能:
router.put('/', function (req, res, next) {
const data = req.body;
const q = req.parsedFilterParam;
const opts = req.parsedQueryOpts;
ResponseCtrl.update(q, data, opts)
.then(stdPromiseResp(res))
.catch(next);
});
我想为中间件添加一些捕获错误的能力,只是为了保存一些代码,如下所示:
router.put('/', function (req, res, next) {
const data = req.body;
const q = req.parsedFilterParam;
const opts = req.parsedQueryOpts;
return ResponseCtrl.update(q, data, opts)
.then(stdPromiseResp(res));
});
所以我们现在在中间件函数中返回承诺,我们可以放弃 catch 块。
所以在内部,它现在可能看起来像这样:
nextMiddlewareFn(req,res,next);
只是想将其更改为:
const v = nextMiddlewareFn(req,res,next);
if(v && typeof v.catch === 'function'){
v.catch(next);
});
有谁知道如何用 Express 做到这一点?