Я хочу сохранить детали формы в базе данных MYSQL, а также отправить детали формы по почте администратору, используя nodemailer. До сих пор я могу отправлять данные администратору и сохранять данные в базе данных MySql по отдельности, но я хочу, чтобы они одновременно сохраняли и отправляли данные формы.

    app.post('/send',function(req,res){

        var type_lea=req.body.lev_type.value
        res.write('type "' + req.body.lev_type.value+'".\n');
      let transporter = nodeMailer.createTransport({
          host: 'smtp.gmail.com',
          port: 465,
          secure: true,
          auth: {
              user: 'marcus1313@gmail.com',
              pass: 'Password'
          }
      });

    app.post('/submit',function(req,res){

      var employ_id=req.body.emp_id;
    var reason=req.body.leave_reason;
    var sql = "INSERT INTO leave_det (Emp_id,Reason) VALUES                                         
    ('"+req.body.emp_id+"','"+         req.body.leave_reason+"',)";
        conn.query(sql, function (err, result) {
          if (err) throw err;
          console.log("1 record inserted");

        });

в этом html-коде я могу вызвать только один почтовый запрос, но я хочу вызвать их оба одновременно.

    <form action="/send" name="mail"  class="loyal" method="post" >
   </form>
-3
Marcus

2 ответа

Вы можете отправить свой запрос POST только одной конечной точке. Но это не должно быть проблемой, так как вы можете вызывать свой почтовый код в той же функции, где вы храните данные в базе данных.

Поскольку вызов SMTP-сервера займет некоторое время, я бы полностью переместил задачу рассылки здесь. Просто напишите в базу данных и выполните рассылку в отдельном задании фоновой обработки.

Пожалуйста, также внимательно проверьте свой оператор SQL на наличие рисков внедрения SQL.

Вы можете попробовать использовать этот метод, может быть, это поможет вам

var app = express()

function otherPath(req, res, next) {
    return res.send('ok')
}

function home(req, res, next) {
    req.url = '/other/path'
  /* Uncomment the next line if you want to change the method 
    req.method = 'POST'
  */
    return app._router.handle(req, res, next)
}
app.get('/other/path', otherPath)
app.get('/', home)
58516836