代码之家  ›  专栏  ›  技术社区  ›  jkalandarov

使用knex mysql添加多个条目/行

  •  0
  • jkalandarov  · 技术社区  · 3 年前

    我从数据库中得到以下数据 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数据库表,如下所示: enter image description here

    有什么想法吗?

    提前谢谢!

    0 回复  |  直到 3 年前
        1
  •  1
  •   Wodlo    3 年前

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

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

    由于这些数据直接来自请求主体,因此在这里添加一些验证显然也是一个好主意,但这感觉超出了您最初问题的范围。