Условные операторы с Узлом Express soap - PullRequest
0 голосов
/ 19 апреля 2020

Я создаю приложение с Node Express и express - soap. Я отправляю сообщение, которое возвращает число: 0 для «не сохранено» и N> 0 для «сохранено». Затем у меня есть функция, которая пытается отправить электронное письмо и возвращает истину или ложь.

¿Как я могу обработать res.render в зависимости от результата ifs и elses?

//Send post to client with some data
app.post('/saveAgenda', function(req, res){

  soap.createClient(url, function(err, client) { 
    client.InsertData(args, function(err, result, raw, soapHeader) {

      //result content is a number
      //example: {"admissionId": 444123}

      if(result.admissionId>0){
        var patientInfo = req.session.patientInfo;
        var sent = sendEmail(...params...);

        if(sent){
          console.log("E-mail sent");
          res.render("pages/fillinForm", {infoPaciente : infoPaciente});  
        }else{
          console.log("Couldn't send e-mail");
          res.render("pages/errorPage");  
        }

      }else{
        console.log("There was a problem with the saving. Contact helpdesk.");
      }
    });
  })
});

[ EDIT ] По-видимому, я могу справиться с этим с помощью asyn c создателя клиента. Я еще не тестировал ответы, я обновлю позже только для ознакомления, на случай, если другие люди столкнутся с этой проблемой.

  soap.createClientAsync(url).then((client) => {
    client.InsertData(args, function(err, result) {
      if(err) {
       console.log("There was a problem with the saving. Contact helpdesk.");

     } else {
       sendEmail(...params...);
       console.log("E-mail sent");
       res.render("pages/fillinForm", {infoPaciente : infoPaciente}); 

     }
   });
  });

[ РЕШЕНИЕ ]

Я наконец-то пришел с решением, я установил npm soap-as-promised и следовал руководству этого простого примера:

soap = require 'soap-as-promised'

soap.createClient 'http://example.org/wsdl'
    .then (client) -> client.myAwesomeSoapMethod param: true
    .then (result) -> console.log "The result was: #{result}"
    .catch (error) -> console.error "There was an error! #{error}"

Конечно, код более сложный, но это было очень полезно, и теперь я могу успешно обработать заказ на исполнение.

...