Я создаю приложение с 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}"
Конечно, код более сложный, но это было очень полезно, и теперь я могу успешно обработать заказ на исполнение.