如何处理sails.js助手中的非显式错误



我正试图弄清楚Sails.js中的错误处理是如何工作的。不幸的是,文档中的代码示例没有涵盖这个用例。

问题是我一直得到这个错误:

UsageError: `.intercept()` handler returned `undefined`, but this should never happen.
Regardless, here is a summary of the original underlying error:

现在我所要做的就是调用一个助手,如果它失败了,那么我想捕捉错误(任何(,记录它并运行一些代码。如果我不使用Sails,而是正常的承诺,我会这样处理:

await helper().catch((err) => { // run some code }

在Sails中,我应该能够使用.entercept((而不是.catch((

我的代码如下:

// ExportController.js
const csv = await sails.helpers.files.convertToCsv(data)
.intercept((err) => {
sails.log.error(err)
req.addFlash('error_messages', 'Error parsing data to csv!')
return res.redirect(`/`);
})
// convert-to-csv.js
if (!Array.isArray(inputs.data)) {
throw new Error('invalid inputs.data type: ' +  typeof inputs.data)
};

现在我该如何避免出现此错误?代码示例仅显示处理显式添加到exits对象的错误的情况,而不显示一般错误处理。在文档中,它说如果过滤器参数是

未提供,所有错误都将被拦截。

或者这只适用于数据库查询吗?因为.entercept((doc部分在该子类别中。

您可以使用"throw'errorCode';"例如:

设置出口:

exits {
errorWithCsvFile: {
responseType: 'badRequest'
}
}
const csv = await sails.helpers.files.convertToCsv(data)
.intercept(‘somethingWrongCode’, ‘errorWithCsvFile’)
... // Other handles
.intercept(err => new Error(err))

备选方案:

try {
...
const csv = await sails.helpers.files.convertToCsv(data)
.intercept((err) => {
sails.log.error(err)
req.addFlash('error_messages', 'Error parsing data to csv!')
throw 'badRequest';
})
...
} catch (err) {
sails.log.err(err);
return res.redirect(`/`);
}

相关内容

  • 没有找到相关文章

最新更新