非托管事务(then-callback)

非托管事务强制你手动回滚或提交交易. 如果不这样做,事务将挂起,直到超时. 要启动非托管事务,请调用 sequelize.transaction() 而不用 callback(你仍然可以传递一个选项对象),并在返回的 promise 上调用 then. 请注意,commit()rollback() 返回一个 promise.

  1. return sequelize.transaction().then(t => {
  2. return User.create({
  3. firstName: 'Bart',
  4. lastName: 'Simpson'
  5. }, {transaction: t}).then(user => {
  6. return user.addSibling({
  7. firstName: 'Lisa',
  8. lastName: 'Simpson'
  9. }, {transaction: t});
  10. }).then(() => {
  11. return t.commit();
  12. }).catch(err => {
  13. return t.rollback();
  14. });
  15. });