【问题标题】:Node - Throw SOAP error on an promise catch block节点 - 在 promise catch 块上抛出 SOAP 错误
【发布时间】:2017-06-20 03:37:46
【问题描述】:

我正在使用 SOAP 库在 NodeJS (v6.9.4) 中开发 SOAP 服务器。我必须从 Postgres 数据库中请求一些数据。我选择使用 pg-promise 库。

SAOP 服务是这样实现的:

TestConnection: function (args, cb, headers, req) {
db.any("select * from users where active=$1", [true])
  .then(function (data) {
    return {};
  })
  .catch(function (error) {
    throw {
      Fault: {
        faultcode: faultCode,
        faultstring: faultString,
        detail: {
          "ns:FaultInformation": {
            "ns:FaultCode": detailedFaultCode,
            "ns:FaultText": detailedFaultText
          }
        },
        statusCode: 500
      }
    };
  });
}

如果在数据库连接/请求期间发生错误,我需要返回一个 SOAP Fault。在 SOAP 库上,您可以通过 throwing a new Fault object 执行此操作。

在这个例子中,我想把它扔到 catch 块中。我知道这不是正确的方法,我正面临这个问题:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝id:3):[object Object]

如何在主服务函数中抛出我的 SOAP 错误异常。我尝试了 setTimeout 解决方案但没有成功。 Promise 是 PG 查询的好解决方案吗?

【问题讨论】:

    标签: node.js soap promise throw pg-promise


    【解决方案1】:

    我自己通过使用soap库提供的soap回调函数 (cb)找到了解决方案。以下代码应在异步服务实现下返回 Soap Fault 异常:

    TestConnection: function (args, cb, headers, req) {
    db.any("select * from users where active=$1", [true])
      .then(function (data) {
        cb({});
      })
      .catch(function (error) {
        cb({
          Fault: {
            faultcode: faultCode,
            faultstring: faultString,
            detail: {
              "ns:FaultInformation": {
                "ns:FaultCode": detailedFaultCode,
                "ns:FaultText": detailedFaultText
              }
            },
            statusCode: 500
          }
        });
      });
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 2021-03-03
      • 2023-04-08
      • 2020-11-20
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      相关资源
      最近更新 更多