【问题标题】:Insert email with unique id node js插入具有唯一 ID 节点 js 的电子邮件
【发布时间】:2020-01-27 23:15:06
【问题描述】:

我如何使用 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('/');
});

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

有什么指南可以查看我做错了什么以及 textarea 标签中的每封电子邮件都有一个唯一的 id 吗?

正确的形式

【问题讨论】:

  • 我假设数据以 "example1@gmail.com\nexample2.gmail.com\n..." 的形式出现,这意味着您需要在 \n 上拆分并遍历该数组。
  • 我正在尝试使用拆分 const x = uStudent.split(\n); 属性,但它告诉我: UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'split' of undefined
  • 您将不得不向我们提供更多关于此的背景信息。我想它应该是email.split(/\n/),但这只是猜测,不知道你收到的格式。
  • 目前我展示的代码以这种方式保存数据。 [drive.google.com/file/d/1ahGNCxDoB5KzxZ0XLq_PYFb8vXGHFkG9/…我想要的就是这样插入数据[drive.google.com/file/d/1wl_8jc7PQ6zvKPhp0qkcVscrx_wY1Qxh/…
  • Google 文档链接没有帮助。始终最好让您的问题保持独立,这样人们就无需四处寻找回答问题所需的所有信息。

标签: mysql node.js foreach


【解决方案1】:

我找不到您在代码中设置要保存的 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);
    });
});

【讨论】:

  • 我已经更正了代码,对于我没有上传正确的代码的一些评论代码表示歉意,但电子邮件与其他变量一起传递。 [drive.google.com/file/d/1_jvH2M0SgKZv1JHywgvc8De28__QQWuI/… 我收到这个错误 TypeError: uStudent.split is not a function
  • @sheila.ars 你不应该拆分 uStudents,而是拆分 emails。然后循环它们以将这些电子邮件插入到不同的行中。请检查我的答案。
  • 你说得对,有一次你提到不应该分uStudents,而是分emails,我明白了,非常感谢你的帮助和耐心。
猜你喜欢
  • 2015-03-02
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多