2017-02-02 79 views
0

上拋出SOAP錯誤我開發使用SOAP庫NodeJ的SOAP服務器 S(v6.9.4)。我必須從Postgres數據庫請求一些數據。我選擇使用lib。節點 - 一個承諾catch塊

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庫中,您可以通過throwing a new Fault object來完成。

在這個例子中,我想把它扔到catch塊中。我知道這是不是這樣做的正確的方式和我面對這個問題:

UnhandledPromiseRejectionWarning:未處理的承諾拒絕 (拒絕ID:3):[對象的對象]

我怎麼能扔我的主服務功能中的SOAP故障異常。我嘗試setTimeout解決方案沒有成功。承諾是PG查詢的一個很好的解決方案嗎?

回答

0

我通過使用soap lib提供的肥皂回調函數(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 
     } 
    }); 
    }); 
}