2017-02-02 19 views
0

Я разрабатываю SOAP-сервер в NodeJ S (v6.9.4), используя библиотеку SOAP. Я должен запросить некоторые данные из базы данных Postgres. Я предпочитаю использовать pg-promise lib.Узла - Бросьте ошибку SOAP на блоке обещает поймать

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 lib вы можете сделать это с помощью throwing a new Fault object.

В этом примере я хочу бросить его в блок catch. Я знаю, что это не правильный способ сделать это, и я столкнулся этот вопрос:

UnhandledPromiseRejectionWarning: Необработанное отказ обещание (отказ ID: 3): [объект Object]

Как я могу бросить my Исключение ошибки SOAP в основной служебной функции. Я без особых усилий пробовал решение setTimeout. Является ли обещание хорошим решением для запросов PG?

ответ

0

Я нашел решение самостоятельно, используя функцию обратного вызова мыла (cb), предоставляемую мыльной библиотекой. Следующий код должен возвращать исключение Soap Fault при реализации службы Async:

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 
     } 
    }); 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^