基于这个问题,我如何与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?
答案 0 :(得分:2)
我在代码中找不到要保存的email
值。
这里有一些问题:
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);
});
});