插入具有唯一ID节点js的电子邮件

时间:2020-01-27 23:15:06

标签: mysql node.js foreach

基于这个问题,我如何与nodejs,mysql,forEach一起尝试使用textarea标签将具有唯一ID的电子邮件保存在数据库中

Insert multiple email to mysql using single textarea

For-each over an array in JavaScript

javascript split on non-alphanumeric an keep delemiters at start

<form class="" action="/registration/instudent/{{id_school}}/{{mat}}/{{grade}}" method="post">

<textarea name="email" ></textarea>            
<button class="btn btn-lg">Save</button>

</form>

使用PHP库中的示例,在example.js文件中,我有以下代码,请尝试保存所有三个变量。

router.post('/instudent/:id_school/:mat/:grade', isLoggedIn, async (req,res) => {
  const { id_school, mat, grade } = req.params;
  const { email } = req.body;

  var uStudent = {
    id_school,
    mat,
    grade,
    email
}

Object.keys(uStudent).forEach(function (key){
    console.log(uStudent[key]);
    db.query('INSERT INTO date set ?', uStudent);
});
  //res.redirect('/');
});

保存到我的数据库时,错误地插入了文本。 它以这种方式将我插入数据库。

enter image description here

是否有任何指南看我做错了什么,并且textarea标签中的每封电子邮件都具有唯一的ID?

正确的形式 enter image description here

1 个答案:

答案 0 :(得分:2)

我在代码中找不到要保存的email值。

这里有一些问题:

  1. 您基于对象键进行循环(这是正确的行为)吗?
  2. 您在哪里更新了uStudent以更新其电子邮件?

我认为您应该基于拆分后的电子邮件进行循环:

router.post('/instudent/:id_school/:mat/:grade', isLoggedIn, async (req,res) => {
    const { id_school, mat, grade } = req.params;
    const { emails } = req.body;

    const uStudent = {
        id_school,
        mat,
        grade
    };

    // loop base on email
    let _emails = emails.split(/\r?\n/);
    _emails.forEach(email => {

        // update uStudent email field
        uStudent.email = email;

        // insert the uStudent
        db.query('INSERT INTO date set ?', uStudent);
    });
});