【问题标题】:How to handle non explicit errors inside sails.js helpers?如何处理sails.js 助手中的非显式错误?
【发布时间】:2020-08-16 18:37:38
【问题描述】:

我试图弄清楚 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 中,我应该能够使用 .intercept() 而不是 .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)
    };

现在如何避免出现此错误? code examples 仅显示处理显式添加到退出对象的错误的情况,但不显示一般错误处理的情况。 In the docs 它说如果过滤器参数是

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

或者这仅适用于数据库查询?因为 .intercept() 文档部分属于该子类别。

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

    你可以使用“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(`/`);
    }
    

    【讨论】:

    • ".intercept()` 处理程序返回了undefined,但这绝不应该发生。"
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多