node.js - Sequelize 更新事务

标签 node.js transactions sequelize.js

我在 Nodejs 中使用 sequalize 事务,但我的问题是它没有在事务中获取我的 users 表并更新我的表

return sequelize.transaction(function (t) {
    var Users = objAllTables.users.users();
    return Users.update(updateUser, {
        where: {
            uid: sessionUser.uid,
            status: 'ACTIVE'
        }
    },{ transaction: t }).then(function (result) {

       return Utils.sendVerificationEmail(sessionUser.uid, sessionUser.user_email)
            .then(function(data){
                 data = false;  
                if(data == false){
                        throw new Error('Failed Email');
                }

            });


    }).then(function (result) {
        console.log(result);
        // Transaction has been committed
        // result is whatever the result of the promise chain returned to the transaction callback
    })

}).catch(function(err){
    res.send({message:err.message})
})

控制台:

Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): START TRANSACTION;
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): SET autocommit = 1;
Executing (default): UPDATE `users` SET `username`='edited' WHERE `uid` = 20 AND `status` = 'ACTIVE'
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): ROLLBACK;

在控制台更新查询中可以看到事务用完了

最佳答案

transaction 键必须在 options 中:

return Users.update(updateUser, {
        where: {
            uid: sessionUser.uid,
            status: 'ACTIVE'
        },
        transaction: t     //second parameter is "options", so transaction must be in it
    })

关于node.js - Sequelize 更新事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470053/

相关文章:

javascript - where 子句上的意外标记 ' : '

javascript - 将 Promise 与 mongoose 函数一起使用

node.js - Webdriver.io - 如何在配置中使用 beforeEach Hook

node.js - expressjs-向路由注入(inject)中间件失败

node.js - 当存在子集合时,为什么从 Firestore 检索的数据返回空数组?

java - 如何在 Java EE 应用程序中锁定数据库记录?

jpa - JSF2 + EJB3 + CRUD 使用用户控件来提交或回滚?

transactions - 水平可扩展/可复制的数据库

javascript - Sequelize 4.3.2 n :m (many-to-many) association: Unhandled rejection SequelizeEagerLoadingError

express - Sequelize Getter 方法日期格式