Sequelize Transactions

    技术2022-07-11  69

    Sequelize Transactions

    ①Unmanaged transactions

    // First, we start a transaction and save it into a variable const t = await sequelize.transaction();

    try {

      // Then, we do some calls passing this transaction as an option:

      const user = await User.create({     firstName: 'Bart',     lastName: 'Simpson'   }, { transaction: t });

      await user.addSibling({     firstName: 'Lisa',     lastName: 'Simpson'   }, { transaction: t });

      // If the execution reaches this line, no errors were thrown.   // We commit the transaction.   await t.commit();

    } catch (error) {

      // If the execution reaches this line, an error was thrown.   // We rollback the transaction.   await t.rollback();

    }

    ②Managed transactions try {

      const result = await sequelize.transaction(async (t) => {

        const user = await User.create({       firstName: 'Abraham',       lastName: 'Lincoln'     }, { transaction: t });

        await user.setShooter({       firstName: 'John',       lastName: 'Boothe'     }, { transaction: t });

        return user;

      });

      // If the execution reaches this line, the transaction has been committed successfully   // `result` is whatever was returned from the transaction callback (the `user`, in this case)

    } catch (error) {

      // If the execution reaches this line, an error occurred.   // The transaction has already been rolled back automatically by Sequelize!

    }

    from:https://sequelize.org/master/manual/transactions.html

    Processed: 0.018, SQL: 9