关于destory和bulkCreate的sequelize js事务没有回滚

时间:2018-01-29 09:20:58

标签: postgresql transactions sequelize.js mean-stack sequelize-cli

我试图在bulkCreate / insert new之前删除所有report_details。问题是当bulkCreate中存在错误时它不会回滚。它应该带来被破坏的report_details,但它不起作用。

我测试此事务代码的方法是插入report_details,然后手动更改一个名称,以便在再次插入时会出现列错误。和事务应该回滚,但在实际的report_details中被销毁,而在bulkCreate错误,它不会带回销毁的report_details 有人可以看看我的代码。我在google上搜索我的语法是正确的。 以及如何在我的机器上测试交易?而不是更改列名称有没有其他方法来产生错误?

function saveReportsDetails(results) {
db.report_detail.bulkCreate(results.report.objAllReportsDetail);

    return db.snpreq.transaction(t => {
        // transaction block
        return db.report_detail.destroy({
            where: {
                profile_id: results.profile.data[0].id
            }
        }, {
            transaction: t
        }).then(deleted => {
            console.log('*******TRANSACTION DELETED*********');

            return db.twenreport_detail.bulkCreate(results.report.objAllReportsDetail, {
                transaction: t
            }).then(reports_created => {
                console.log('*******TRANSACTION bulk created*********');
            });
        });
    }).then(transaction => {
        console.log('********All Transaction********');
    }).catch(err => {
        console.log('*******ROLL BACK*********');
    });
}

1 个答案:

答案 0 :(得分:0)

m代码语法有错误。在删除事务中,它在单个参数中使用 transaction:t 像这样

return db.twentythree_and_me_report_detail.destroy({
            where: {
                profile_id: results.profile.data[0].id
            },
            transaction: t
        })

我没有收到任何语法错误或任何其他错误。所以,我只是保持搜索并找到答案