Я пытаюсь ВСТАВИТЬ несколько записей в таблицу MySQL, но что бы я ни делал, она вставляет только одну строку. Вот код node.js: let orderID = 15; // Это внешний ключ. Отметил это из таблицы. ...

0
TheNoobDeveloper0299 16 Дек 2020 в 14:03

1 ответ

Лучший ответ

Ну, я использовал похожий метод. За исключением того факта, что я не вставляю все строки сразу, а выполняю вставку каждой строки, выполняя запрос на каждой итерации цикла.

Примечание: я использую архитектуру сервера MVC

Вот код.

  1. Контроллер
module.export.multiInsert = async (req) => {
    const transferData = req.body.rows;
    let conn = await con.getConnection();

    for await (data of transferData) {
    try {
            await conn.beginTransaction();
           // code for insertion
            const data = await something.addData(conn, a, b, c);
    } catch (error) {
            conn.rollback();

            response.status = false;
            response.result = 'Error occured!'

            console.log(error)

    } finally {
            conn.release();
    }
}
  1. Модель
Class something{
static async addData(conn, a, b, c) {

        let params = [a,b,c];

        const [resData] = await conn.execute('INSERT INTO `table` (`a`,`b`,`c`) 
                          VALUES(?,?,?);', params);
        return { "status": resData };
    }
}
  1. Маршрут
router.post('/insert-a-lot-of-data', controller.multiInsert)
1
Srinath Kamath 16 Дек 2020 в 11:25