【问题标题】:Can I use 2 POST requests on click of one button using html, mysql and NODE.js?我可以使用 html、mysql 和 NODE.js 单击一个按钮来使用 2 个 POST 请求吗?
【发布时间】:2019-10-23 14:50:19
【问题描述】:

我想将表单详细信息保存到 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 代码中,我只能调用一个 post 请求,但我想同时调用它们。

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

【问题讨论】:

  • 通常你应该有一个单一的路线app.post('/send',function(req,res){,你必须做保存到数据库的逻辑,一旦完成,你就可以触发邮件成功响应数据库保存
  • 只使用一个路由“/send”并在那里使用您的/submit 代码?
  • 将两段代码写在一个post请求中
  • 你需要小心这个 SQL 查询。它对 SQL 注入并不安全
  • ArayniMax 请详细说明您刚才所说的这个话题,这似乎是一件严肃的事情。

标签: javascript html css mysql node.js


【解决方案1】:

你可以试试这个方法可能对你有帮助

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)

【讨论】:

  • 所以在这里你在前一个请求的末尾调用一个请求,即第二个请求。将在处理第一个请求时调用。很好,谢谢我也试试这个方法。
【解决方案2】:

您只能将 POST 请求发送到一个端点。但这在这里应该不是问题,因为您可以在将数据存储到数据库的同一函数中调用您的邮件代码。

由于调用 SMTP 服务器需要一些时间,我将把邮件任务完全移出循环。只需写入数据库并在单独的后台处理作业中进行邮件发送。

还请仔细检查您的 SQL 语句是否存在 SQL 注入风险。

【讨论】:

  • 非常感谢您的帮助
猜你喜欢
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
相关资源
最近更新 更多