Spec-Zone.ru › Sequelize 5

Транзакция

Объект транзакции используется для идентификации текущей транзакции. Он создаётся вызовом Sequelize.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: *

См. Transaction.LOCK

Краткое описание методов

Публичные методы
public

afterCommit(fn: Function)

Обработчик, который выполняется после подтверждения транзакции

public

commit(): Promise

Подтвердить транзакцию

public

rollback(): Promise

Отменить (прервать) транзакцию

Статические публичные члены

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

Уровни изоляции можно устанавливать для каждой транзакции, передав options.isolationLevel в sequelize.transaction. Sequelize использует уровень изоляции по умолчанию для базы данных, вы можете переопределить его, передав options.isolationLevel в опциях конструктора Sequelize.

Передайте желаемый уровень в качестве первого аргумента:

Свойства:

Имя Тип Атрибут Описание
READ_UNCOMMITTED *
READ_COMMITTED *
REPEATABLE_READ *
SERIALIZABLE *

Пример:

return sequelize.transaction({isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE}, transaction => {
  // your transactions
}).then(result => {
  // 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, но вы можете переопределить тип по умолчанию, передав options.transactionType в new Sequelize. Только Sqlite.

Передайте желаемый уровень в качестве первого аргумента:

Свойства:

Имя Тип Атрибут Описание
DEFERRED *
IMMEDIATE *
EXCLUSIVE *

Пример:

return sequelize.transaction({type: Sequelize.Transaction.TYPES.EXCLUSIVE}, transaction => {
  // your transactions
}).then(result => {
  // 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 строка
  • необязательно

Устанавливает тип транзакции. Только для Sqlite

options.isolationLevel строка
  • необязательно

Устанавливает уровень изоляции транзакции.

options.deferrable строка
  • необязательно

Устанавливает ограничения, которые должны быть отложены или проверены немедленно. Только для PostgreSQL

Публичные члены

public get LOCK: * source

См. Transaction.LOCK

Публичные методы

public afterCommit(fn: Функция) source

Обработчик, который выполняется после подтверждения транзакции

Параметры:

Имя Тип Атрибут Описание
fn Функция

Функция обратного вызова, которая вызывается с подтвержденной транзакцией

public commit(): Promise source

Подтвердить транзакцию

Возвращаемое значение:

Promise

public rollback(): Promise source

Откатить (прервать) транзакцию

Возвращаемое значение:

Promise

Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v5/class/lib/transaction.js~Transaction.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API