0

我正在使用SOAP库在 NodeJ S (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 故障。在 SOAP 库上,您可以通过抛出一个新的故障对象来做到这一点。

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

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

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

4

1 回答 1

0

我通过使用soap lib提供的soap回调函数(cb)自己找到了一个解决方案。以下代码应在 Async 服务实现下返回 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
      }
    });
  });
 }
于 2017-02-02T22:36:03.027 回答