Вернуть ответ от другого JS в Nodemailer (Angular) - PullRequest
0 голосов
/ 13 февраля 2020

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

...