指南 参考 源代码
public class | source

Transaction

事务对象用于标识正在运行的事务。它通过调用Sequelize.transaction()创建。要在事务下运行查询,应在选项对象中传递事务。

参见

静态成员摘要

静态公共成员
public static get

ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string}

隔离级别可以通过将options.isolationLevel传递给sequelize.transaction来为每个事务设置。

public static get

LOCK: object: {"UPDATE": string, "SHARE": string, "KEY_SHARE": string, "NO_KEY_UPDATE": string}

行锁定的可能选项。

public static get

TYPES: {"DEFERRED": string, "IMMEDIATE": string, "EXCLUSIVE": string}

类型可以通过将options.type传递给sequelize.transaction来为每个事务设置。

构造函数摘要

公共构造函数
public

constructor(sequelize: Sequelize, options: object)

创建一个新的事务实例

成员摘要

公共成员
public get

LOCK: *

方法摘要

公共方法
public

一个在事务提交后运行的钩子

public

async commit(): Promise

提交事务

public

async forceCleanup()

终止此事务使用的连接。

public

用于获取要使用的连接并在连接上设置正确的选项。

public

async rollback(): Promise

回滚(中止)事务

静态公共成员

public static get ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} source

隔离级别可以通过将options.isolationLevel传递给sequelize.transaction来为每个事务设置。Sequelize 使用数据库的默认隔离级别,可以通过在 Sequelize 构造函数选项中传递options.isolationLevel来覆盖它。

将所需的级别作为第一个参数传入

属性

名称类型属性描述
READ_UNCOMMITTED *
READ_COMMITTED *
REPEATABLE_READ *
SERIALIZABLE *

示例

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

行锁定的可能选项。与find调用一起使用

属性

名称类型属性描述
UPDATE *
SHARE *
KEY_SHARE *

仅限 Postgres 9.3+

NO_KEY_UPDATE *

仅限 Postgres 9.3+

返回值

object

返回属性

名称类型属性描述
UPDATE *
SHARE *
KEY_SHARE *

仅限 Postgres 9.3+

NO_KEY_UPDATE *

仅限 Postgres 9.3+

示例

// t1 is a transaction
Model.findAll({
  where: ...,
  transaction: t1,
  lock: t1.LOCK...
});
Postgres 还支持在急切加载时使用 OF 进行特定锁定
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 transaction

public static get TYPES: {"DEFERRED": string, "IMMEDIATE": string, "EXCLUSIVE": string} source

类型可以通过将options.type传递给sequelize.transaction来为每个事务设置。默认设置为DEFERRED,但可以通过在new Sequelize中传递options.transactionType来覆盖默认类型。仅限 Sqlite。

将所需的级别作为第一个参数传入

属性

名称类型属性描述
DEFERRED *
IMMEDIATE *
EXCLUSIVE *

示例

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 constructor(sequelize: Sequelize, options: object) source

创建一个新的事务实例

参数

名称类型属性描述
sequelize Sequelize

已配置的 Sequelize 实例

options object

带有选项的对象

options.type string
  • 可选

设置事务的类型。仅限 Sqlite

options.isolationLevel string
  • 可选

设置事务的隔离级别。

options.deferrable string
  • 可选

设置约束是否延迟或立即检查。仅限 PostgreSQL

options.readOnly boolean
  • 可选

此事务是否仅用于读取数据。用于确定 Sequelize 是否允许使用读取复制服务器。

公共成员

public get LOCK: * source

请参见Transaction.LOCK

公共方法

public afterCommit(fn: Function) source

一个在事务提交后运行的钩子

参数

名称类型属性描述
fn Function

一个回调函数,它将使用已提交的事务进行调用

public async commit(): Promise source

提交事务

返回值

Promise

public async forceCleanup() source

结束此事务使用的连接。 作为最后的手段,例如,由于 COMMIT 或 ROLLBACK 导致错误,并且事务处于损坏状态,将连接释放回连接池将很危险。

public async prepareEnvironment(useCLS: boolean): Promise source

用于获取要使用的连接并在连接上设置正确选项。 我们应该确保在下面的 cleanup() 中清理所有设置的环境。

参数

名称类型属性描述
useCLS boolean

默认为 true:使用 CLS (Continuation Local Storage) 与 Sequelize。 使用 CLS,事务回调中的所有查询将自动接收事务对象。

返回值

Promise

public async rollback(): Promise source

回滚(中止)事务

返回值

Promise