В моем приложении Electron я хотел бы вводить данные (например, Fixtures) при запуске приложения.
Я использую библиотеку typeorm для управления подключением к базе данных SQLite3.
Я создал JSON-файл, который представляет собой Entity typeorm, и я хотел бы сохранить их все в моей БД с помощью typeorm.Для этого кажется, что использование trasaction более эффективно.
Я пробую две разные вещи, но результат один и тот же, и я не понимаю, почему.Сообщение о проблеме:
Ошибка: транзакция уже запущена для данного соединения, передайте новую транзакцию перед началом новой
Моя первая реализация транзакции :
async setAll(entity, data)
{
let connection = await this.init()
const queryRunner = connection.createQueryRunner()
await queryRunner.connect()
for (const [key, value] of Object.entries(data))
{
await typeorm.getManager().transaction(transactionalEntityManager =>
{
})
}
}
Моя вторая реализация транзакции :
async setAll(entity, data)
{
let connection = await this.init()
const queryRunner = connection.createQueryRunner()
await queryRunner.connect()
for (const [key, value] of Object.entries(data))
{
let genre1 = new Genre()
genre1.name = 'toto'
genre1.identifier = 'gt'
genre1.logo = ''
genre1.isActivate = false
await queryRunner.startTransaction()
await queryRunner.manager.save(genre1)
await queryRunner.commitTransaction()
await queryRunner.release()
}
}
Примечание: вторая реализация правильно сохраняет первый объект, но не другие.
Как можно управлять множеством транзакций типа, созданных в цикле для постоянной партии данных?