基于这个问题,我如何使用nodejs、mysql、forEach尝试使用textarea标签以唯一的id将电子邮件保存在我的BD中
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 中,我有此代码,尝试仅保存我的 textarea 标记的电子邮件值。
router.post('/instudent/:id_school/:mat/:grade', isLoggedIn, async (req,res) => {
const { id_school, mat, grade } = req.params;
const { email } = req.body;
const e = email.match('\r\n');
//var e = ["a@gmail.com", "b@gmail.com", "c@gmail.com"];
//const uStudent = {
// id_school,
// mat,
// grade,
// email
// };
e.forEach(function(email, indice, array) {
// await db.query('INSERT INTO date set ?', [uStudent]);
db.query("INSERT INTO date (email) VALUES (email)");
console.log('this is my email:',email);
});
//res.redirect('/');
});
如果我尝试通过异步执行循环来保存所有变量,我会发现以下错误。
const uStudent = {
id_school,
mat,
grade,
email
};
await db.query('INSERT INTO date set ?', [uStudent]);
UnhandledPromiseRejectionWarning: TypeError: uStudent.forEach is not a function
如果我以这种方式插入两封电子邮件。
db.query("INSERT INTO date (email) VALUES (email)");
在我的数据库中,我只看到空白字段,有人可以帮助我或给我指导,让我知道我做错了什么。
最佳答案
非常感谢您的帮助,您告诉我的是正确的tadman以这种方式正确插入到我的数据库中。
db.query('INSERT INTO date set ?', uStudent)
我设法插入数据的正确方法是帮助我解决这个问题
Why is “forEach not a function” for this object?
然后我的代码看起来像这样,我希望它有所帮助,因为我已经尝试使用 forEach 保存在数据库中好几天了。
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
}
Object.keys(uStudent).forEach(function (key){
console.log(uStudent[key]);
db.query('INSERT INTO date set ?', uStudent);
});
//res.redirect('/');
});
关于mysql - 在node js forEach中插入多个文本单个textarea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937504/