在第一次迭代之前使用带有异步/等待NodeJS返回的for循环的beginTransaction

问题描述

我正在开发一个应用程序,该应用程序将根据数据库中是否已有某个项目进行插入或更新,因此在执行实际查询之前,我需要确保其工作正常,这就是为什么要使用事务。问题在于它仅尝试循环的第一次迭代并返回connection.beginTransaction()。我正在使用以下代码,有人可以告诉我是否做错了什么。 我发布了我正在使用的代码

connection.beginTransaction(async err => {
    console.log("\nExecuting queries...");

    let n = 0;
    let rowCollect = [];

    console.log(1)
    for(const row of data) {
        console.log(n)
        const name = row[0] !== undefined ? row[0] : "";
    
        await getId(name).then(async id => {
            if(name === "") return await insert(row);
            else {
                if(id == 0) return await insert(row);
                return await updateById(id,row);
            }
        }).then(_ => {
            n++;
            rowCollect.push(row);
        }).catch(e => {
            console.log('There was an error...');
        });
    };

        let error = !(n==data.length);

        if(error) {
            console.log("rollback");
            connection.rollback();
        }
    });

我试图使beginTransaction作为一个函数,没有它,我不知道该怎么办。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)