【问题标题】:Sequelize transaction prevent updating rowSequelize transaction 防止更新行
【发布时间】:2020-11-15 17:01:36
【问题描述】:

当我在更新查询中使用事务时,它会阻止更新行。这是我所做的:

let t = await sequelize.transaction();
let updated = User.update({
    lastName: 'new lastname',
    firstName: 'new firstname'
}, 
{
where: { email:'zzz@yyy.com' },
// doesn't update with transaction
// transaction: t
})
.then(success(res))

顺便说一句,它更新了数据库中的updatedAt 列,但其他字段仍然相同。有什么想法吗?

更新:当我在其他函数中运行一些查询并将 t(事务)传递给函数时会发生这种情况。

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    尝试这样我认为这将在这里工作我使用async await 不是基于承诺的方法。我使用的事务是Managed transactions 如果你想在你的应用程序中使用事务,最好使用它

    updateUser: async (req, res) => {
        sequelize.sequelize.transaction(async (t1) => {
    
            let data = await User.findOne({
                where: {
                    id: req.body.id
                }
            });
            if (data) {
                await User.update(req.body, { where: { id: req.body.id } });
                return res.status(200).send(error.OK);
            }
            else {
                return res.status(422).send(error.DATA_NOT_FOUND);
            }
        }).catch(function (err) {
            console.log(err)
            return res.status(500).send(error.SERVER_ERROR);
        });
    }
    

    【讨论】:

    猜你喜欢
    • 2012-02-20
    • 2022-11-10
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多