У меня есть массив необработанных SQL выражений, которые я хочу передать knex.
const rawExpressions = ["CREATE TABLE new_table (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email VARCHAR(50))","INSERT INTO new_table (firstname, lastname, email)VALUES (\"Test\", \"Name\", \"name@example.com\")", "INSERT INTO new_table (firstname, lastname, wrongfield) VALUES (\"Another\", \"Name\", \"test@example.com\")"]
knex.transaction(trx => {
const queries: any[] = [];
rawExpressions.forEach(async expression => {
const query = knex.raw(expression).transacting(trx)
queries.push(query)
})
Promise.all(queries)
.then(trx.commit)
.catch(trx.rollback)
}).catch(error => console.log('error', error))
Это работает, если ошибки нет, но если есть ошибка (в rawExpressions
выше есть wrongfield
) Я хочу, чтобы он не фиксировал какую-либо часть выражений и не выполнял откат. Вместо этого он выполняет первые два выражения (создает таблицу и вставляет). Есть идеи, что не так?