使用 knex mysql 添加多个 entries/rows
Adding multiple entries/rows with knex mysql
我从 req.body
中得到以下数据:
{
"user_id": "1",
"user_name": "jkalandarov",
"email": "jkalandarov@gmail.com",
"courses": [
{
"course_id": 1,
"course_name": "English",
"course_price": 265
},
{
"course_id": 2,
"course_name": "Node.js",
"course_price": 200
},
{
"course_id": 3,
"course_name": "Backend Developement",
"course_price": 300
}
]
}
我想在 knex 的帮助下将这些数据插入到 mysql 数据库 table 的三行中,就像这样通过单个查询:
有什么想法吗?
提前致谢!
假设您已经设置了 knex 连接,它应该只允许您将对象数组传递到 insert
函数中,以便使用单个语句插入多行。 https://knexjs.org/#Builder-insert
第 1 步:构建对象数组
const objectsToInsert = req.body.courses.map(course => {
return {
user_id: req.body.user_id,
user_name: req.body.user_name,
email: req.body.email,
...course
}
});
第 2 步:使用您的 knex 连接插入它们
await knex('your_table_name').insert(objectsToInsert);
这应该在单个查询中将这三行插入到您的 table 中。
由于此数据直接来自请求正文,因此在此处添加一些验证显然也是一个好主意,但这超出了您最初问题的范围。
我从 req.body
中得到以下数据:
{
"user_id": "1",
"user_name": "jkalandarov",
"email": "jkalandarov@gmail.com",
"courses": [
{
"course_id": 1,
"course_name": "English",
"course_price": 265
},
{
"course_id": 2,
"course_name": "Node.js",
"course_price": 200
},
{
"course_id": 3,
"course_name": "Backend Developement",
"course_price": 300
}
]
}
我想在 knex 的帮助下将这些数据插入到 mysql 数据库 table 的三行中,就像这样通过单个查询:
有什么想法吗?
提前致谢!
假设您已经设置了 knex 连接,它应该只允许您将对象数组传递到 insert
函数中,以便使用单个语句插入多行。 https://knexjs.org/#Builder-insert
第 1 步:构建对象数组
const objectsToInsert = req.body.courses.map(course => {
return {
user_id: req.body.user_id,
user_name: req.body.user_name,
email: req.body.email,
...course
}
});
第 2 步:使用您的 knex 连接插入它们
await knex('your_table_name').insert(objectsToInsert);
这应该在单个查询中将这三行插入到您的 table 中。
由于此数据直接来自请求正文,因此在此处添加一些验证显然也是一个好主意,但这超出了您最初问题的范围。