(四)sequelize postgres事务

自动提交

sequelize.transaction(function (t) {
    return Account.create({
        id: '461910',
        account: '4619'
    }, {
        transaction: t
    }).then(account => {
        return account.destroy({
            transaction: t
        });
    })
}).then(() => {}, err => console.log(err));

手动提交

sequelize.transaction().then(function (t) {
    return Account.create({
        id: '461910',
        account: '4619'
    }, {
        transaction: t
    }).then(account => {
        return account.destroy({
            transaction: t
        });
    }).then(() => t.commit(), err => r.rollback());
});

Promise.all()

如果数据是数组,要先处理之后,再放到promise.all中,嵌套多层数组,报错将获取不到

sequelize.transaction(function (t) {
    return Promise.all([
        Account.create({}, {transaction: t}),             //新增单条数据
        Account.bulkCreate([], {transaction: t}),         //批量新增数据
        Account.update({}, {where: {}, transaction: t}),  //更新满足某条件数据,第一个参数为修改数据内容
        Account.destroy({where: {}, transaction: t}),     //删除满足某条件数据
        sequelize.query(sql, {                            //执行sql语句
            type: sequelize.QueryTypes.SELECT,
            transaction: t
        })
    ])
}).then(result => {
    console.log(result);                                  //返回promise执行结果数组
}, err => console.log(err));

sequelize transaction

posted @ 2018-06-20 16:09  4619  阅读(714)  评论(0)    收藏  举报