【问题标题】:Adding multiple entries/rows with knex mysql使用 knex mysql 添加多个条目/行
【发布时间】:2023-03-25 04:24:01
【问题描述】:

我从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 数据库表中,如下所示,使用单个查询:

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: mysql node.js database knex.js


    【解决方案1】:

    假设您已经设置了 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);
    

    这应该在单个查询中将这三行插入到您的表中。

    由于此数据直接来自请求正文,因此在此处添加一些验证显然也是一个好主意,但这超出了您原始问题的范围。

    【讨论】:

    • 谢谢!成功了
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2018-11-08
    • 1970-01-01
    • 2017-12-09
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多