Transaction
The transaction object is used to identify a running transaction.
It is created by calling Sequelize.transaction().
To run a query under a transaction, you should pass the transaction in the options object.
Static Member Summary
| Static Public Members | ||
| public static get | ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} Isolation levels can be set per-transaction by passing  | |
| public static get | Possible options for row locking. | |
| public static get | Types can be set per-transaction by passing  | |
Constructor Summary
| Public Constructor | ||
| public | constructor(sequelize: Sequelize, options: object) Creates a new transaction instance | |
Member Summary
| Public Members | ||
| public get | LOCK: * Please see Transaction.LOCK | |
Method Summary
| Public Methods | ||
| public | afterCommit(fn: Function) A hook that is run after a transaction is committed | |
| public | Commit the transaction | |
| public | async forceCleanup() Kills the connection this transaction uses. | |
| public | async prepareEnvironment(useCLS: boolean): Promise Called to acquire a connection to use and set the correct options on the connection. | |
| public | Rollback (abort) the transaction | |
Static Public Members
public static get ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} source
Isolation levels can be set per-transaction by passing options.isolationLevel to sequelize.transaction.
Sequelize uses the default isolation level of the database, you can override this by passing options.isolationLevel in Sequelize constructor options.
Pass in the desired level as the first argument:
Properties:
| Name | Type | Attribute | Description | 
| READ_UNCOMMITTED | * | ||
| READ_COMMITTED | * | ||
| REPEATABLE_READ | * | ||
| SERIALIZABLE | * | 
Example:
try {
  const result = await sequelize.transaction({isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE}, transaction => {
    // your transactions
  });
  // transaction has been committed. Do something after the commit if required.
} catch(err) {
  // do something with the err.
}public static get LOCK: object: {"UPDATE": string, "SHARE": string, "KEY_SHARE": string, "NO_KEY_UPDATE": string} source
Possible options for row locking. Used in conjunction with find calls:
Properties:
| Name | Type | Attribute | Description | 
| UPDATE | * | ||
| SHARE | * | ||
| KEY_SHARE | * | Postgres 9.3+ only | |
| NO_KEY_UPDATE | * | Postgres 9.3+ only | 
Return:
| object | 
Return Properties:
| Name | Type | Attribute | Description | 
| UPDATE | * | ||
| SHARE | * | ||
| KEY_SHARE | * | Postgres 9.3+ only | |
| NO_KEY_UPDATE | * | Postgres 9.3+ only | 
Example:
// t1 is a transaction
Model.findAll({
  where: ...,
  transaction: t1,
  lock: t1.LOCK...
});UserModel.findAll({
  where: ...,
  include: [TaskModel, ...],
  transaction: t1,
  lock: {
    level: t1.LOCK...,
    of: UserModel
  }
});
# UserModel will be locked but TaskModel won't!// t1 is a transaction
Model.findAll({
  where: ...,
  transaction: t1,
  lock: true,
  skipLocked: true
});
# The query will now return any rows that aren't locked by another transactionpublic static get TYPES: {"DEFERRED": string, "IMMEDIATE": string, "EXCLUSIVE": string} source
Types can be set per-transaction by passing options.type to sequelize.transaction.
Default to DEFERRED but you can override the default type by passing options.transactionType in new Sequelize.
Sqlite only.
Pass in the desired level as the first argument:
Properties:
| Name | Type | Attribute | Description | 
| DEFERRED | * | ||
| IMMEDIATE | * | ||
| EXCLUSIVE | * | 
Example:
try {
  await sequelize.transaction({ type: Sequelize.Transaction.TYPES.EXCLUSIVE }, transaction => {
     // your transactions
  });
  // transaction has been committed. Do something after the commit if required.
} catch(err) {
  // do something with the err.
}Public Constructors
public constructor(sequelize: Sequelize, options: object) source
Creates a new transaction instance
Params:
| Name | Type | Attribute | Description | 
| sequelize | Sequelize | A configured sequelize Instance | |
| options | object | An object with options | |
| options.type | string | 
 | Sets the type of the transaction. Sqlite only | 
| options.isolationLevel | string | 
 | Sets the isolation level of the transaction. | 
| options.deferrable | string | 
 | Sets the constraints to be deferred or immediately checked. PostgreSQL only | 
| options.readOnly | boolean | 
 | Whether this transaction will only be used to read data. Used to determine whether sequelize is allowed to use a read replication server. | 
Public Members
Public Methods
public afterCommit(fn: Function) source
A hook that is run after a transaction is committed
Params:
| Name | Type | Attribute | Description | 
| fn | Function | A callback function that is called with the committed transaction | 
public async forceCleanup() source
Kills the connection this transaction uses. Used as a last resort, for instance because COMMIT or ROLLBACK resulted in an error and the transaction is left in a broken state, and releasing the connection to the pool would be dangerous.
public async prepareEnvironment(useCLS: boolean): Promise source
Called to acquire a connection to use and set the correct options on the connection.
We should ensure all of the environment that's set up is cleaned up in cleanup() below.
Params:
| Name | Type | Attribute | Description | 
| useCLS | boolean | Defaults to true: Use CLS (Continuation Local Storage) with Sequelize. With CLS, all queries within the transaction callback will automatically receive the transaction object. | 
 开发指南
  Reference
  Source
  开发指南
  Reference
  Source
  
   
    
  