Я пытаюсь получить ответ от сервера. Я следую инструкциям, так как это моя первая попытка с бэкэндом. В этом бэкэнде используется другой файл js с именем configMensaje. js, который содержит конфигурацию опций для транспортера. Вот как это выглядит:
приложение. js:
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
const configMensaje = require('./configMensaje');
app.use(bodyParser.json({limit: '50mb'}));
app.use(cors({origin: "*"}))
app.get("/",(req,res)=> {
res.send("<h1>hola</h1>");
});
app.post('/firmarpdf', (req, res) => {
configMensaje(req.body);
})
app.listen(3000, () => {
console.log('Servidor corriendo')
});
и соответствующая часть configMensaje. js
transporter.sendMail(mailOptions, function (err, info) {
if (err){
console.log(err);
return res.status(500).send();
}
console.log("LA RESPUESTA ES: "+info.response);
return res.status(200).send();
});
И в Angular
this._MessageService.sendMessage(formulario).subscribe(
data => {
console.log(`${formulario.asunto} se ha enviado correctamente.` );
},
err => {
console.log(err);
console.log(`El correo no se ha podido enviar.` );
}, () => {}
);
Насколько я понимаю, приложение. js выполняет configMensaje и отправляет тело запроса в качестве параметра. Я совершенно не понимаю, как этот параметр передается, так как configMensaje не является функцией как таковой, это просто набор переменных для конфигурации и этой функции, о которой я говорил выше.
Дело в том, что я хотел бы вернуться к Angular (получить в переменной ответ, который будет показан пользователю) ответа по электронной почте, принято или отклонено, но я не знаю, как отправить информацию в основное приложение. js для создания ответа.
РЕДАКТИРОВАТЬ :
Я попытался решить эту проблему с помощью функции обратного вызова. в приложении. js У меня сейчас:
configMensaje(req.body, function(statusresult){
result = statusresult;
});
res.status(result).send();
console.log("status fuera: "+ result);
});
И в configMensaje я передал параметр и функцию обратного вызова следующим образом:
module.exports = (formulario, callback) => {
//code
transporter.sendMail(mailOptions, function (err, info) {
if (err){
console.log(err);
} else{
statusno = (info.response);
statusno = statusno.split(" ",1) //I'll get the status number in statusno[0]
console.log("estado dentro: "+ statusno[0]);
callback(statusno[0]); //this is what I understand that should get the result //and pass it to the app.js
}
});
}
Однако, это не работает. Переменная не заполняется после выполнения кода. Я не могу использовать asyn c и жду, так как он выдает мне ошибки. Я не знаю, что еще делать.