Sequelize
Это основной класс, точка входа в sequelize. Чтобы его использовать, вам нужно просто импортировать sequelize:
const Sequelize = require('sequelize');
В дополнение к sequelize, библиотека подключения для диалекта, который вы хотите использовать, также должна быть установлена в вашем проекте. Однако вам не нужно её импортировать, так как sequelize позаботится об этом.
Краткое описание статических методов
| Статические публичные методы | ||
|---|---|---|
| public static | Запрос AND | с версии v2.0.0-dev3 |
| public static | Создаёт объект, представляющий вызов функции cast. | с версии v2.0.0-dev3 |
| public static | Создаёт объект, представляющий колонку в БД, что позволяет ссылаться на другую колонку в вашем запросе. | с версии v2.0.0-dev3 |
| public static | Создаёт объект, представляющий функцию базы данных. | с версии v2.0.0-dev3 |
| public static | Создаёт объект, представляющий вложенные условия where для типов данных json в postgres/sqlite/mysql. | |
| public static | Создаёт объект, представляющий литерал, т.е. | с версии v2.0.0-dev3 |
| public static | Запрос OR | с версии v2.0.0-dev3 |
| public static | useCLS(ns: Object): Object Использование CLS с Sequelize. | |
| public static | Способ указания attr = condition. | с версии v2.0.0-dev3 |
Краткое описание конструкторов
| Публичный конструктор | ||
|---|---|---|
| public | constructor(database: String, username: String, password: String, options: Object) Инициализация sequelize с именем базы данных, именем пользователя и паролем | |
Краткое описание членов
| Публичные члены | ||
|---|---|---|
| public | models: {} Модели хранятся здесь под именем, заданным | |
Краткое описание методов
| Общедоступные методы | ||
|---|---|---|
| public | authenticate(options: *): Promise Проверить подключение, попытавшись выполнить аутентификацию | |
| public | close(): Promise Закрыть все подключения, используемые экземпляром sequelize, и освободить все ссылки, чтобы экземпляр можно было удалить сборщиком мусора. | |
| public | createSchema(schema: String, options: Object): Promise Создать новую схему базы данных. | |
| public | Определить новую модель, представляющую таблицу в БД. | |
| public | drop(options: object): Promise Удалить все таблицы, определённые через этот экземпляр sequelize. | |
| public | dropAllSchemas(options: Object): Promise Удалить все схемы | |
| public | dropSchema(schema: String, options: Object): Promise Удалить отдельную схему | |
| public | escape(value: String): String Экранировать значение. | |
| public | getDialect(): String Возвращает указанный диалект. | |
| public | Возвращает экземпляр QueryInterface. | |
| public | Импортировать модель, определённую в другом файле | |
| public | isDefined(modelName: String): Boolean Проверяет, определена ли модель с данным именем | |
| public | Получить уже определённую модель | |
| public | query(sql: String, options: Object): Promise Выполнить запрос к БД, возможно, минуя все возможности sequelize. | |
| public | Получить fn для случайного числа, в зависимости от диалекта | |
| public | set(variables: Object, options: Object): Promise Выполнить запрос, который установит переменную среды или пользователя. | |
| public | showAllSchemas(options: Object): Promise Показать все определённые схемы | |
| public | sync(options: Object): Promise Синхронизировать все определённые модели с БД. | |
| public | transaction(options: Object, autoCallback: Function): Promise Начать транзакцию. | |
| public | truncate(options: object): Promise Обнулить все таблицы, определённые через модели sequelize. | |
Статические общедоступные методы
public static and(args: String | Object): and since v2.0.0-dev3 source
Запрос AND
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| args | String | Object |
Каждый аргумент будет соединён оператором AND |
Возвращаемое значение:
| and |
См. также:
public static cast(val: any, type: String): cast since v2.0.0-dev3 source
Создаёт объект, представляющий вызов функции cast.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| val | any |
Значение для приведения типов | |
| type | String |
Тип, к которому необходимо привести значение |
Возвращаемое значение:
| cast |
public static col(col: String): col since v2.0.0-dev3 source
Создаёт объект, представляющий столбец в БД, что позволяет ссылаться на другой столбец в запросе. Это часто полезно в сочетании с sequelize.fn, так как необработанные строковые аргументы для fn будут экранированы.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| col | String |
Имя столбца |
Возвращаемое значение:
| col |
См. также:
- Sequelize#fn
public static fn(fn: String, args: any): fn since v2.0.0-dev3 source
Создаёт объект, представляющий баз данных функцию. Это может быть использовано в запросах поиска, как в части where, так и order, а также в качестве значений по умолчанию в определениях столбцов. Если вы хотите обратиться к столбцам в своей функции, вы должны использовать sequelize.col, чтобы столбцы правильно интерпретировались как столбцы, а не как строки.
Преобразование имени пользователя к верхнему регистру
instance.updateAttributes({
username: self.sequelize.fn('upper', self.sequelize.col('username'))
})
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fn | String |
Функция, которую вы хотите вызвать | |
| args | any |
Все последующие аргументы будут переданы в качестве аргументов функции |
Возвращаемое значение:
| fn |
Пример:
instance.updateAttributes({
username: self.sequelize.fn('upper', self.sequelize.col('username'))
}) См. также:
public static json(conditions: String | Object, value: String | Number | Boolean): json source
Создаёт объект, представляющий вложенные условия where для типов данных json в postgres/sqlite/mysql.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| conditions | String | Object |
Хэш, содержащий строки/числа или другие вложенные хэши, строку с использованием нотации точек или строку с использованием синтаксиса json postgres/sqlite/mysql. | |
| value | String | Number | Boolean |
|
Необязательное значение для сравнения. Создаёт строку вида "<json path> = '<value>'". |
Возвращаемое значение:
| json |
См. также:
- Model#findAll
public static or(args: String | Object): or since v2.0.0-dev3 source
Запрос OR
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| args | String | Object |
Каждый аргумент будет объединён операцией OR |
Возвращаемое значение:
| or |
См. также:
public static useCLS(ns: Object): Object source
Использование CLS с Sequelize. Пространство имён CLS, переданное в качестве параметра, сохраняется как Sequelize._cls, а обещание bluebird модифицируется для использования этого пространства имён с помощью модуля cls-bluebird.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| ns | Object |
Пространство имён CLS |
Возвращаемое значение:
| Object |
Конструктор Sequelize |
public static where(attr: Object, comparator: String | Op, logic: String | Object): * since v2.0.0-dev3 source
Способ задания attr = условие.
Атрибут может быть объектом из Model.rawAttributes, (например, Model.rawAttributes.id или Model.rawAttributes.name). Атрибут должен быть определён в вашем определении модели. Атрибут также может быть объектом из одной из утилит Sequelize (sequelize.fn, sequelize.col и т.д.).
Для строковых атрибутов используйте синтаксис { where: { attr: something }}. Если вы не хотите, чтобы ваша строка экранировалась, используйте sequelize.literal.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attr | Object |
Атрибут, который может быть объектом атрибута из | |
| comparator | String | Op |
| |
| logic | String | Object |
Условие. Может быть как простым типом, так и более сложным условием ( |
Возвращаемое значение:
| * |
См. также:
Публичные конструкторы
public constructor(database: String, username: String, password: String, options: Object) source
Инициализация Sequelize с именем базы данных, пользователем и паролем
Пример использования
// without password and options
const sequelize = new Sequelize('database', 'username')
// without options
const sequelize = new Sequelize('database', 'username', 'password')
// without password / with blank password
const sequelize = new Sequelize('database', 'username', null, {})
// with password and options
const sequelize = new Sequelize('my_database', 'john', 'doe', {})
// with database, username, and password in the options object
const sequelize = new Sequelize({ database, username, password });
// with uri
const sequelize = new Sequelize('mysql://localhost:3306/database', {})
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|
| database | String |
|
Имя базы данных |
| username | String |
|
Имя пользователя, используемое для аутентификации в базе данных. |
| password | String |
|
Пароль, используемый для аутентификации в базе данных. Поддерживает шифрование SQLCipher для SQLite. |
| options | Object |
|
Объект с параметрами. |
| options.host | String |
|
Хост реляционной базы данных. |
| options.port | Integer |
|
Порт реляционной базы данных. |
| options.username | String |
|
Имя пользователя, используемое для аутентификации в базе данных. |
| options.password | String |
|
Пароль, используемый для аутентификации в базе данных. |
| options.database | String |
|
Имя базы данных |
| options.dialect | String |
|
Диалект базы данных, к которой вы подключаетесь. Один из mysql, postgres, sqlite и mssql. |
| options.dialectModulePath | String |
|
Если указано, загрузить библиотеку диалекта из этого пути. Например, если вы хотите использовать pg.js вместо pg при подключении к базе данных pg, вы должны указать 'pg.js' здесь |
| options.dialectOptions | Object |
|
Объект дополнительных параметров, которые передаются непосредственно библиотеке подключения |
| options.storage | String |
|
Используется только SQLite. По умолчанию: ':memory:' |
| options.protocol | String |
|
Протокол реляционной базы данных. |
| options.define | Object |
|
Параметры по умолчанию для определения моделей. См. sequelize.define для опций |
| options.query | Object |
|
Параметры по умолчанию для sequelize.query |
| options.set | Object |
|
Параметры по умолчанию для sequelize.set |
| options.sync | Object |
|
Параметры по умолчанию для sequelize.sync |
| options.timezone | string |
|
Временная зона, используемая при преобразовании даты из базы данных в объект даты JavaScript. Временная зона также используется для установки TIMEZONE при подключении к серверу, чтобы убедиться, что результат функций NOW, CURRENT_TIMESTAMP и других функций времени находится в правильной временной зоне. Для наилучшей кроссплатформенной производительности используйте формат +/-HH:MM. Также можно использовать строковые представления временных зон, используемые moment.js (например, 'America/Los_Angeles'); это полезно для учета изменений летнего времени. |
| options.standardConformingStrings | boolean |
|
Параметр сеанса PostgreSQL |
| options.logging | Function |
|
Функция, которая выполняется каждый раз, когда Sequelize что-то записывает. |
| options.benchmark | Boolean |
|
Передаёт время выполнения запроса в миллисекундах в качестве второго аргумента функции logging (options.logging). |
| options.omitNull | Boolean |
|
Флаг, определяющий, должны ли нулевые значения передаваться в SQL-запросы или нет. |
| options.native | Boolean |
|
Флаг, определяющий, использовать ли родную библиотеку или нет. В настоящее время это имеет эффект только для postgres. |
| options.replication | Boolean |
|
Использование репликации чтение/запись. Для включения репликации передайте объект со двумя свойствами, read и write. Write должен быть объектом (один сервер для обработки записей), а read — массивом объектов (несколько серверов для обработки чтений). Каждый сервер read/write может иметь следующие свойства: |
| options.pool | Object |
|
Конфигурация пула подключений к базе данных sequelize. |
| options.pool.max | Integer |
|
Максимальное количество подключений в пуле. |
| options.pool.min | Integer |
|
Минимальное количество подключений в пуле. |
| options.pool.idle | Integer |
|
Максимальное время в миллисекундах, в течение которого соединение может быть бездействующим перед освобождением. Используйте вместе с evict для правильной работы, для получения дополнительной информации см. https://github.com/coopernurse/node-pool/issues/178#issuecomment-327110870 |
| options.pool.acquire | Integer |
|
Максимальное время в миллисекундах, которое пул будет пытаться получить соединение, прежде чем выбросить ошибку. |
| options.pool.evict | Integer |
|
Интервал времени в миллисекундах для удаления устаревших соединений. Установите в 0, чтобы отключить эту функцию. |
| options.pool.handleDisconnects | Boolean |
|
Управляет тем, должен ли пул автоматически обрабатывать разрыв соединения, не вызывая ошибок. |
| options.pool.validate | Функция |
|
Функция, которая валидирует подключение. Вызывается с параметром client. По умолчанию функция проверяет, что client — это объект и что его состояние не отключено |
| options.quoteIdentifiers | Булево |
|
Устанавливается в значение |
| options.transactionType | Строка |
|
Устанавливает тип транзакции по умолчанию. Возможные значения см. в |
| options.isolationLevel | Строка |
|
Устанавливает уровень изоляции транзакции по умолчанию. Возможные значения см. в |
| options.retry | Объект |
|
Набор флагов, которые управляют тем, когда запрос автоматически повторно выполняется. |
| options.retry.match | Массив |
|
Запрос будет повторно выполнен только в том случае, если ошибка соответствует одному из этих строк. |
| options.retry.max | Целое число |
|
Сколько раз запрос, который завершился ошибкой, будет автоматически повторно выполнен. Установка значения 0 отключает повторную попытку при ошибке SQL_BUSY. |
| options.typeValidation | Булево |
|
Выполнять встроенные валидаторы типов при вставке и обновлении, например, проверять, являются ли аргументы, переданные в целочисленные поля, целыми числами. |
| options.operatorsAliases | Объект | Булево |
|
Псевдоним операторов на основе строк, значение по умолчанию — true, что включит все псевдонимы операторов. Передайте объект, чтобы ограничить набор псевдонимов операторов, или false, чтобы полностью их отключить. |
Общедоступные члены
общедоступный models: {} источник
Модели хранятся здесь под именем, заданным для sequelize.define
Публичные методы
public authenticate(options: *): Promise source
Проверка соединения путём аутентификации
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | * |
Возвращаемое значение:
| Promise |
public close(): Promise source
Закрытие всех соединений, используемых этим экземпляром sequelize, и освобождение всех ссылок, чтобы экземпляр можно было утилизировать.
Обычно это делается при выходе процесса, поэтому вам нужно вызывать этот метод только в том случае, если вы создаёте несколько экземпляров и хотите утилизировать некоторые из них.
Возвращаемое значение:
| Promise |
public createSchema(schema: String, options: Object): Promise source
Создание новой схемы базы данных.
Обратите внимание, что это схема в смысле PostgreSQL, а не таблица базы данных. В MySQL и SQLite эта команда ничего не сделает.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| schema | String |
Имя схемы | |
| options | Object |
| |
| options.logging | Boolean | function |
Функция, которая регистрирует запросы SQL, или false для отсутствия регистрации |
Возвращаемое значение:
| Promise |
См. также:
public define(modelName: String, attributes: Object, options: Object): Model source
Определение новой модели, представляющей таблицу в БД.
Столбцы таблицы определяются объектом, который передаётся в качестве второго аргумента. Каждый ключ объекта представляет столбец
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| modelName | String |
Имя модели. Модель будет храниться в | |
| attributes | Object |
Объект, где каждый атрибут является столбцом таблицы. См. Model.init | |
| options | Object |
|
Эти параметры объединяются с параметрами по умолчанию define, предоставленными конструктору Sequelize, и передаются в Model.init() |
Возвращаемое значение:
| Model |
Пример:
sequelize.define('modelName', {
columnA: {
type: Sequelize.BOOLEAN,
validate: {
is: ["[a-z]",'i'], // will only allow letters
max: 23, // only allow values <= 23
isIn: {
args: [['en', 'zh']],
msg: "Must be English or Chinese"
}
},
field: 'column_a'
// Other attributes here
},
columnB: Sequelize.STRING,
columnC: 'MY VERY OWN COLUMN TYPE'
})
sequelize.models.modelName // The model will now be available in models under the name given to define См. также:
- Model.init для более подробного описания объектов `options` и `attributes`.
- Раздел руководства по определению моделей
- DataTypes Список возможных типов данных
public drop(options: object): Promise source
Удаление всех таблиц, определенных через этот экземпляр sequelize. Это делается путём вызова Model.drop для каждой модели
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | object |
Параметры, передаваемые в каждый вызов Model.drop | |
| options.logging | Boolean | function |
Функция, которая регистрирует запросы SQL, или false для отсутствия регистрации |
Возвращаемое значение:
| Promise |
См. также:
- Model.drop для параметров
public dropAllSchemas(options: Object): Promise source
Удаление всех схем
Обратите внимание, что это схема в смысле PostgreSQL, а не таблица базы данных. В MySQL и SQLite это эквивалентно удалению всех таблиц.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.logging | Boolean | function |
Функция, которая регистрирует запросы SQL, или false для отсутствия регистрации |
Возвращаемое значение:
| Promise |
public dropSchema(schema: String, options: Object): Promise source
Удалить схему.
Обратите внимание, что это схема в смысле PostgreSQL, а не таблица базы данных. В MySQL и SQLite это удаляет таблицу, соответствующую имени схемы.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| schema | String |
Имя схемы | |
| options | Object |
| |
| options.logging | Boolean | function |
Функция, которая регистрирует SQL-запросы, или false для отсутствия регистрации. |
Возвращает:
| Promise |
public escape(value: String): String source
Экранировать значение.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| value | String |
Возвращает:
| String |
public getDialect(): String source
Возвращает указанный диалект.
Возвращает:
| String |
Указанный диалект. |
public getQueryInterface(): QueryInterface source
Возвращает экземпляр QueryInterface.
Возвращает:
| QueryInterface |
Экземпляр (синглтон) QueryInterface. |
public import(path: String): Model source
Импортировать модель, определённую в другом файле.
Импортированные модели кэшируются, поэтому многократные вызовы import с одинаковым путем не загружают файл многократно.
См. https://github.com/sequelize/express-example для краткого примера определения моделей в отдельных файлах, чтобы их можно было импортировать с помощью sequelize.import
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| path | String |
Путь к файлу, содержащему модель, которую вы хотите импортировать. Если часть относительная, она будет разрешена относительно вызывающего файла |
Возвращает:
| Model |
public isDefined(modelName: String): Boolean source
Проверяет, определена ли модель с заданным именем.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| modelName | String |
Имя модели, определенной с помощью Sequelize.define |
Возвращает:
| Boolean |
public model(modelName: String): Model source
Получить уже определённую модель.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| modelName | String |
Имя модели, определенной с помощью Sequelize.define |
Возвращает:
| Model |
Исключения:
* |
Вызовет ошибку, если модель не определена (то есть, если sequelize#isDefined возвращает false). |
public query(sql: String, options: Object): Promise source
Выполнить запрос к БД, с возможностью обойти все удобства sequelize.
По умолчанию функция вернёт два аргумента: массив результатов и объект метаданных, содержащий количество затронутых строк и т. д. Для доступа к результатам используйте .spread.
Если вы выполняете тип запроса, где вам не нужны метаданные, например SELECT запрос, вы можете передать тип запроса, чтобы sequelize отформатировал результаты:
sequelize.query('SELECT...').spread((results, metadata) => {
// Raw query - use spread
});
sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }).then(results => {
// SELECT query - use then
})
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sql | String | ||
| options | Object |
|
Опции запроса. |
| options.raw | Boolean |
|
Если true, sequelize не будет пытаться отформатировать результаты запроса или создать экземпляр модели из результата. |
| options.transaction | Transaction |
|
Транзакция, в рамках которой должен быть выполнен запрос. |
| options.type | QueryTypes |
|
Тип запроса, который вы выполняете. Тип запроса влияет на то, как результаты отформатированы перед возвращением. Тип является строкой, но |
| options.nest | Boolean |
|
Если true, преобразует объекты с именами свойств, разделенными |
| options.plain | Boolean |
|
Устанавливает тип запроса в |
| options.replacements | Object | Array |
|
Либо объект замены параметров с именами в формате |
| options.bind | Object | Array |
|
Либо объект параметров связывания с именами в формате |
| options.useMaster | Boolean |
|
Вынуждает запрос использовать пул записи независимо от типа запроса. |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для регистрации sql. |
| options.instance | new Model() |
|
Экземпляр sequelize, используемый для построения экземпляра возврата. |
| options.model | Model |
|
Модель sequelize, используемая для построения возвращаемых экземпляров моделей (ранее называлось callee). |
| options.retry | Object |
|
Набор флагов, контролирующих, когда запрос автоматически повторно выполняется. |
| options.retry.match | Array |
|
Повторно выполнить запрос только если ошибка соответствует одной из этих строк. |
| options.retry.max | Integer |
|
Сколько раз запрос, который завершился неудачей, автоматически повторно выполняется. |
| options.searchPath | String |
|
Необязательный параметр для указания схемы search_path (только Postgres). |
| options.supportsSearchPath | Boolean |
|
Если false, не добавлять к запросу search_path (только Postgres). |
| options.mapToModel | Boolean |
|
Сопоставить возвращаемые поля с полями модели, если присутствует |
| options.fieldMap | Object |
|
Сопоставить возвращаемые поля с произвольными именами для типа запроса |
Возвращаемое значение:
| Promise |
См. также:
- Model.build для получения дополнительной информации об опции экземпляра.
public random(): fn source
Получить fn для случайного числа в зависимости от диалекта.
Возвращаемое значение:
| fn |
public set(variables: Object, options: Object): Promise source
Выполнить запрос, который установит переменную среды или пользователя. Переменные устанавливаются на подключение, поэтому этой функции необходима транзакция. Работает только для MySQL.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| variables | Object |
Объект с несколькими переменными. | |
| options | Object |
Опции запроса. | |
| options.transaction | Transaction |
Транзакция, в рамках которой должен быть выполнен запрос. |
Возвращаемое значение:
| Promise |
public showAllSchemas(options: Object): Promise source
Отображение всех определенных схем
Обратите внимание, что это схема в смысле PostgreSQL, а не таблица базы данных. В MySQL и SQLite это отобразит все таблицы.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.logging | Boolean | function |
Функция для логирования SQL-запросов или false для отсутствия логирования |
Возвращаемое значение:
| Promise |
public sync(options: Object): Promise source
Синхронизация всех определенных моделей с БД.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.force | Boolean |
|
Если force равно true, для каждой модели будет выполнено |
| options.match | RegExp |
|
Сопоставление с регулярным выражением имени базы данных перед синхронизацией, проверка безопасности для случаев, когда force: true используется в тестах, но не в рабочем коде |
| options.logging | Boolean | function |
|
Функция, которая регистрирует SQL-запросы, или false для отсутствия логирования |
| options.schema | String |
|
Схема, в которой должны создаваться таблицы. Это может быть переопределено для каждой таблицы в sequelize.define |
| options.searchPath | String |
|
Необязательный параметр для указания схемы search_path (только Postgres) |
| options.hooks | Boolean |
|
Если hooks равно true, будут вызваны хуки beforeSync, afterSync, beforeBulkSync, afterBulkSync |
| options.alter | Boolean |
|
Изменяет таблицы в соответствии с моделями. Не рекомендуется для использования в рабочей среде. Удаляет данные в столбцах, которые были удалены или изменили свой тип в модели. |
Возвращаемое значение:
| Promise |
public transaction(options: Object, autoCallback: Function): Promise source
Начать транзакцию. При использовании транзакций вы должны передать транзакцию в аргументе options, чтобы запрос выполнялся в рамках этой транзакции
sequelize.transaction().then(transaction => {
return User.findOne(..., {transaction})
.then(user => user.updateAttributes(..., {transaction}))
.then(() => transaction.commit())
.catch(() => transaction.rollback());
})
Также поддерживается синтаксис автоматического подтверждения или отката на основе разрешения цепочки промисов:
sequelize.transaction(transaction => { // Note that we use a callback rather than a promise.then()
return User.findOne(..., {transaction})
.then(user => user.updateAttributes(..., {transaction}))
}).then(() => {
// Committed
}).catch(err => {
// Rolled back
console.error(err);
});
Если у вас включен CLS, транзакция будет автоматически передана любому запросу, выполняемому в рамках обратного вызова. Для включения CLS добавьте его в ваш проект, создайте пространство имен и установите его в конструкторе sequelize:
const cls = require('continuation-local-storage');
const ns = cls.createNamespace('....');
const Sequelize = require('sequelize');
Sequelize.useCLS(ns);
Обратите внимание, что CLS включен для всех экземпляров sequelize, и все экземпляры будут использовать одно и то же пространство имен
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.autocommit | Boolean |
| |
| options.type | String |
|
См. |
| options.isolationLevel | String |
|
См. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| autoCallback | Function |
|
Обратный вызов вызывается с объектом транзакции и должен возвращать промис. Если промис разрешен, транзакция подтверждается; если промис отклонен, транзакция отменяется |
Возвращаемое значение:
| Promise |
См. также:
public truncate(options: object): Promise source
Очистка всех таблиц, определенных через модели sequelize. Это выполняется путем вызова Model.truncate() для каждой модели.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | object |
|
Параметры, передаваемые в Model.destroy в дополнение к truncate |
| options.transaction | Boolean | function |
| |
| options.logging | Boolean | function |
|
Функция, которая регистрирует SQL-запросы, или false для отсутствия логирования |
Возвращаемое значение:
| Promise |
См. также:
- Model.truncate для получения дополнительной информации
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v4/class/lib/sequelize.js~Sequelize.html