Electron 将许多事务类型化到循环javascript中

Electron 将许多事务类型化到循环javascript中,electron,typeorm,Electron,Typeorm,在我的Electron应用程序中,我想在应用程序启动时注入数据,比如夹具 我使用typeorm库来管理SQLite3数据库连接 我创建了表示实体typeorm的json文件,我想用typeorm将它们全部保存在我的数据库中。因此,使用传输似乎更有效 我尝试了两种不同的方法,但结果是一样的,我不明白为什么。问题信息是: 错误:给定连接的事务已启动,提交 启动新事务之前的当前事务 我的事务的第一个实现: 我的第二个事务实现: 注意:第二个实现正确地保留了第一个对象,而不是其他对象 如何管理创建到循环

在我的Electron应用程序中,我想在应用程序启动时注入数据,比如夹具

我使用typeorm库来管理SQLite3数据库连接

我创建了表示实体typeorm的json文件,我想用typeorm将它们全部保存在我的数据库中。因此,使用传输似乎更有效

我尝试了两种不同的方法,但结果是一样的,我不明白为什么。问题信息是:

错误:给定连接的事务已启动,提交 启动新事务之前的当前事务

我的事务的第一个实现:

我的第二个事务实现:

注意:第二个实现正确地保留了第一个对象,而不是其他对象

如何管理创建到循环中的许多TypeForm事务以持久化大量数据

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()
    }
}
async setAll(entity, data) {
    let connection = await this.init()
    const queryRunner = connection.createQueryRunner()
    await queryRunner.connect()
    await queryRunner.startTransaction()
    try {
        for (const [key, value] of Object.entries(data)) {
            let genre1 = new Genre()
            genre1.name = 'toto'
            genre1.identifier = 'gt'
            genre1.logo = ''
            genre1.isActivate = false
          const newGenre= queryRunner.manager.create(Genre,genre1)
           await queryRunner.manager.save(newGenre)
            await queryRunner.commitTransaction()
        }
    } catch {
        await queryRunner.rollbackTransaction()
    } finally {
        await queryRunner.release()
    }