Я хочу сохранить детали формы в базе данных 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 23 Окт 2019 в 09:39
3
Как правило, у вас должен быть один маршрут app.post('/send',function(req,res){, и в нем вы должны выполнить логику сохранения в БД, и как только это будет сделано, вы можете инициировать отправку почты в ответ на успешное сохранение БД.
 – 
Subburaj
23 Окт 2019 в 09:42
1
Просто используйте один маршрут «/ send» и используйте там свой / submit-код?
 – 
ArayniMax
23 Окт 2019 в 09:42
Напишите два блока кодов в одном почтовом запросе
 – 
Raj Rana
23 Окт 2019 в 09:43
И с этим SQL-запросом нужно быть осторожным. Это небезопасно против SQL-инъекций
 – 
ArayniMax
23 Окт 2019 в 09:44
ArayniMax, пожалуйста, уточните эту тему, о которой вы только что заявили, это кажется серьезным вопросом.
 – 
Marcus
23 Окт 2019 в 09:54

2 ответа

Вы можете попробовать этот метод, может он вам поможет.

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)
0
Trushar Narodia 23 Окт 2019 в 09:46
Итак, здесь вы вызываете один запрос в конце предыдущего запроса, то есть 2-го запроса. будет вызываться при обработке 1-го запроса. Приятно, спасибо, я тоже попробую этот метод.
 – 
Marcus
23 Окт 2019 в 09:59

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

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

Также внимательно проверьте свой оператор SQL на предмет риска внедрения SQL-кода.

0
Philip 23 Окт 2019 в 09:50
Спасибо, ваша помощь очень ценится
 – 
Marcus
23 Окт 2019 в 09:56