Модель
Модель представляет собой таблицу в базе данных. Экземпляры этого класса представляют собой строку базы данных.
Экземпляры модели работают с концепцией свойства dataValues , которое хранит фактические значения, представленные экземпляром. По умолчанию, значения из dataValues также можно получить напрямую из экземпляра, то есть:
instance.field
// is the same as
instance.get('field')
// is the same as
instance.getDataValue('field')
Однако, если для field определены геттеры и/или сеттеры, они будут вызваны вместо возвращения значения из dataValues. Доступ к свойствам напрямую или использование get предпочтительнее для обычного использования, getDataValue следует использовать только для пользовательских геттеров.
См.:
- Sequelize#define для получения дополнительной информации о геттерах и сеттерах
Статический обзор методов
| Статические публичные методы | ||
|---|---|---|
| public static | addScope(name: String, scope: Object | Function, options: Object) Добавить новый область видимости в модель. | |
| public static | Выполнить метод агрегирования по указанному полю | |
| public static | Создает ассоциацию между этим (источником) и указанным объектом назначения. | |
| public static | belongsToMany(target: Model, options: object): BelongsToMany Создает ассоциацию N:M с таблицей соединения. | |
| public static | Создает новую экземпляр модели. | |
| public static | bulkCreate(records: Array, options: Object): Promise<Array<Model>> Массовое создание и вставка нескольких экземпляров. | |
| public static | count(options: Object): Promise<Integer> Подсчет количества записей, соответствующих заданному условию where. | |
| public static | Создает новый экземпляр модели и вызывает save на нем. | |
| public static | decrement(fields: *, options: *): Promise<this> Уменьшение значения одного или нескольких столбцов. | since 4.36.0 |
| public static | describe(schema: *, options: *): Promise Выполнение запроса describe для таблицы. | |
| public static | destroy(options: Object): Promise<Integer> Удаление нескольких экземпляров или установка их timestamp deletedAt на текущее время, если | |
| public static | drop(options: Object): Promise Удаление таблицы, представленной данной моделью. | |
| public static | Поиск нескольких экземпляров. | |
| public static | findAndCountAll(findOptions: Object): Promise<{count: Integer, rows: Model[]}> Поиск всех записей, соответствующих запросу, с указанным смещением/ограничением и получение общего количества записей, соответствующих запросу. | |
| public static | Поиск одного экземпляра по его первичному ключу. | |
| public static | findCreateFind(options: Object): Promise<Model, created> Более производительный findOrCreate, который не будет работать в рамках транзакции (по крайней мере, в postgres). Выполнит вызов find, если пусто, попытается создать, если есть ограничение уникальности, попытается найти снова. | |
| public static | Поиск одного экземпляра. | |
| public static | findOrBuild(options: Object): Promise<Model, initialized> Поиск строки, соответствующей запросу, или создание (но не сохранение) строки, если не найдено. Успешный результат промиса будет (instance, initialized) - убедитесь, что используете .spread() Псевдоним: findOrInitialize | |
| public static | findOrCreate(options: Object): Promise<Model, created> Поиск строки, соответствующей запросу, или создание и сохранение строки, если не найдено. Успешный результат промиса будет (instance, created) - убедитесь, что используете .spread() | |
| public static | getTableName(): String | Object Получение имени таблицы модели с учетом схемы. | |
| public static | Создаёт ассоциацию 1:м между этим (источником) и указанной целью. | |
| public static | Создаёт ассоциацию между этим (источником) и указанной целью. | |
| public static | increment(fields: String | Array | Object, options: Object): Promise<this> Увеличивает значение одного или нескольких столбцов. | |
| public static | Инициализирует модель, представляющую таблицу в БД, с атрибутами и опциями. | |
| public static | max(field: String, options: Object): Promise<Any> Находит максимальное значение поля | |
| public static | min(field: String, options: Object): Promise<Any> Находит минимальное значение поля | |
| public static | removeAttribute(attribute: String) Удаляет атрибут из определения модели | |
| public static | restore(options: Object): Promise<undefined> Восстанавливает несколько экземпляров, если | |
| public static | schema(schema: String, options: Object): this Применяет схему к этой модели. | |
| public static | Применяет область, созданную в | |
| public static | sum(field: String, options: Object): Promise<Number> Находит сумму поля | |
| public static | sync(options: *): Promise<this> Синхронизирует эту модель с БД, то есть создаёт таблицу. | |
| public static | truncate(options: object): Promise Обнуляет все экземпляры модели. | |
| public static | ||
| public static | update(values: Object, options: Object): Promise<Array<affectedCount, affectedRows>> Обновляет несколько экземпляров, соответствующих опциям where. | |
| public static | upsert(values: Object, options: Object): Promise<created> Вставить или обновить одну строку. |
Краткое описание конструкторов
| Public Constructor | ||
|---|---|---|
| public | constructor(values: Object, options: Object) Создаёт новый экземпляр модели. | |
Краткое описание членов
| Public Members | ||
|---|---|---|
| public | isNewRecord: Boolean: * Возвращает true, если этот экземпляр ещё не был сохранён в базе данных | |
| public get | Ссылка на экземпляр sequelize | |
Краткое описание методов
| Методы публичного доступа | ||
|---|---|---|
| public | changed(key: String): Boolean | Array Если метод changed вызывается со строкой, он вернёт булево значение, указывающее, отличается ли значение этого ключа в | |
| public | decrement(fields: String | Array | Object, options: Object): Promise Уменьшение значения одного или нескольких столбцов. | |
| public | destroy(options: Object): Promise<undefined> Удалить строку, соответствующую этому экземпляру. | |
| public | Проверка, ссылаются ли этот и | |
| public | equalsOneOf(others: Array): Boolean Проверка, равен ли этот экземпляр одному из | |
| public | get(key: String, options: Object): Object | any Если ключ не указан, возвращает все значения экземпляра, вызывая также виртуальные геттеры. | |
| public | getDataValue(key: String): any Получить значение базового данных. | |
| public | increment(fields: String | Array | Object, options: Object): Promise<this> Увеличение значения одного или нескольких столбцов. | с версии 4.0.0 |
| public | isSoftDeleted(): Boolean Вспомогательный метод для определения, является ли экземпляр "мягко удалённым". | |
| public | previous(key: String): any | Array<any> Возвращает предыдущее значение ключа из | |
| public | reload(options: Object): Promise<this> Обновить текущий экземпляр на месте, т.е. | |
| public | restore(options: Object): Promise<undefined> Восстановить строку, соответствующую этому экземпляру. | |
| public | save(options: Object): Promise<this|Errors.ValidationError> Проверить этот экземпляр и, если проверка пройдёт, сохранить его в базе данных. | |
| public | set(key: String | Object, value: any, options: Object): * Метод set используется для обновления значений в экземпляре (представлении экземпляра sequelize, помните, что ничего не будет сохранено, пока вы не вызовите | |
| public | setDataValue(key: String, value: any) Обновить базовое значение данных. | |
| public | toJSON(): object Преобразовать экземпляр в представление JSON. | |
| public | update(updates: Object, options: Object): Promise<this> Это то же самое, что вызов | |
| public | validate(options: Object): Promise<undefined> Проверить атрибуты этого экземпляра в соответствии с правилами проверки, заданными в определении модели. | |
| public | where(checkVersion: *): Object Получить объект, представляющий запрос для этого экземпляра, использовать с | |
Статические публичные методы
public static addScope(name: String, scope: Object | Function, options: Object) source
Добавляет новый scope к модели. Это особенно полезно для добавления scopes с include, когда модель, которую нужно включить, недоступна на момент определения этой модели.
По умолчанию, если scope с таким именем уже существует, будет выброшено исключение. Передайте override: true в объекте options, чтобы отключить эту ошибку.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| name | String |
Имя scope. Используйте | |
| scope | Object | Function | ||
| options | Object |
| |
| options.override | Boolean |
|
public static aggregate(field: String, aggregateFunction: String, options: Object): Promise<DataTypes|object> source
Выполняет агрегационную операцию над указанным полем.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| field | String |
Поле для агрегирования. Может быть именем поля или * | |
| aggregateFunction | String |
Функция для агрегирования, например sum, max и т.д. | |
| options | Object |
|
Опции запроса. Смотрите sequelize.query для полных опций |
| options.where | Object |
|
Хэш атрибутов поиска. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.benchmark | Boolean |
|
Передайте время выполнения запроса в миллисекундах как второй аргумент функции logging (options.logging). |
| options.dataType | DataTypes | String |
|
Тип результата. Если |
| options.distinct | boolean |
|
Применяет DISTINCT к агрегируемому полю. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса. |
| options.plain | Boolean |
|
Если |
Возвращаемое значение:
| Promise<DataTypes|object> |
Возвращает агрегированный результат, приведённый к |
public static belongsTo(target: Model, options: object): BelongsTo source
Создаёт ассоциацию между этим (источником) и указанным объектом-целью. Внешний ключ добавляется к источнику.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model | ||
| options | object |
| |
| options.hooks | boolean |
|
Установите в значение true, чтобы выполнить hooks before-/afterDestroy, когда связанная модель удаляется из-за каскадного удаления. Например, если |
| options.as | string |
|
Псевдоним этой модели в единственном числе. См. также параметр |
| options.foreignKey | string | object |
|
Имя внешнего ключа в исходной таблице или объект, представляющий определение типа для внешнего столбца (см. |
| options.targetKey | string |
|
Имя поля, используемого в качестве ключа для ассоциации в целевой таблице. По умолчанию устанавливается в значение первичного ключа целевой таблицы. |
| options.onDelete | string |
|
SET NULL, если внешний ключ допускает значения NULL, NO ACTION в противном случае. |
| options.onUpdate | string |
| |
| options.constraints | boolean |
|
Должны ли быть включены ограничения on update и on delete для внешнего ключа. |
Возвращаемое значение:
| BelongsTo |
Пример:
Profile.belongsTo(User) // This will add userId to the profile table public static belongsToMany(target: Модель, options: объект): BelongsToMany источник
Создать ассоциацию многие-ко-многим с таблицей соединения. Определение through обязательно.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Модель | ||
| options | объект | ||
| options.hooks | boolean |
|
Установите в значение true, чтобы выполнить перед-/после-удаления хуки при удалении связанной модели из-за каскадирования. Например, если |
| options.through | Модель | строка | объект |
Имя таблицы, используемой для соединения источника и назначения в ассоциациях многие-ко-многим. Также может быть моделью sequelize, если вы хотите самостоятельно определить таблицу соединения и добавить дополнительные атрибуты. | |
| options.through.model | Модель |
|
Модель, используемая для соединения обеих сторон ассоциации многие-ко-многим. |
| options.through.scope | объект |
|
Набор пар ключ-значение, который будет использоваться для создания и поиска ассоциаций по умолчанию в модели соединения. (Не забудьте добавить атрибуты в модель соединения) |
| options.through.unique | boolean |
|
Если значение true, будет сгенерирован уникальный ключ из используемых внешних ключей (возможно, следует отключить это и создать собственные уникальные ключи при использовании областей видимости). |
| options.as | строка | объект |
|
Псевдоним этой ассоциации. Если вы предоставляете строку, она должна быть множественной, и она будет сделана единственной с помощью node.inflection. Если вы хотите самостоятельно управлять единственной формой, предоставьте объект с |
| options.foreignKey | строка | объект |
|
Имя внешнего ключа в таблице соединения (представляющей модель источника) или объект, представляющий определение типа для внешнего столбца (см. |
| options.otherKey | строка | объект |
|
Имя внешнего ключа в таблице соединения (представляющей модель назначения) или объект, представляющий определение типа для другого столбца (см. |
| options.scope | объект |
|
Набор пар ключ-значение, который будет использоваться для создания и поиска ассоциаций по умолчанию для назначения. (sqlite не поддерживается для N:M) |
| options.timestamps | boolean |
|
Должна ли модель соединения иметь метки времени? |
| options.onDelete | строка |
|
Каскадирование, если это многие-ко-многим, и установка NULL, если это один-ко-многим. |
| options.onUpdate | строка |
| |
| options.constraints | boolean |
|
Должны ли быть включены ограничения при обновлении и удалении на внешнем ключе. |
Возвращаемое значение:
| BelongsToMany |
Пример:
// Automagically generated join model
User.belongsToMany(Project, { through: 'UserProjects' })
Project.belongsToMany(User, { through: 'UserProjects' })
// Join model with additional attributes
const UserProjects = sequelize.define('UserProjects', {
started: Sequelize.BOOLEAN
})
User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects }) public static build(options: Объект): Модель | Модель[] источник
Создает новую модель.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| (values|values[]) | Объект |
|
Объект пар ключ-значение или массив таких пар. Если массив, функция вернёт массив экземпляров. |
| options | Объект |
| |
| options.raw | Булево |
|
Если установлено в значение true, значения будут игнорировать установки полей и виртуальных свойств. |
| options.isNewRecord | Булево |
| |
| options.include | Массив |
|
Массив опций включения — используется для построения предварительно загруженных/включенных экземпляров моделей. См. |
public static bulkCreate(records: Array, options: Object): Promise<Array<Model>> source
Создать и вставить несколько экземпляров в пакетном режиме.
Обработчик успешного выполнения получает массив экземпляров, но обратите внимание, что эти экземпляры могут не полностью отражать состояние строк в базе данных. Это связано с тем, что MySQL и SQLite не делают простым получение автоматически сгенерированных идентификаторов и других значений по умолчанию для нескольких записей. Чтобы получить экземпляры для только что созданных значений, вам необходимо снова выполнить запрос.
Если проверка данных завершается неудачно, обещание отклоняется с массивоподобным объектом AggregateError.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| records | Array |
Список объектов (ключ/значение) для создания экземпляров | |
| options | Object |
| |
| options.fields | Array |
|
Поля для вставки (по умолчанию все поля) |
| options.validate | Boolean |
|
Должны ли каждая строка быть проверена на соответствие правилам валидации перед вставкой? Вся вставка завершится неудачно, если одна строка не пройдет валидацию |
| options.hooks | Boolean |
|
Выполнять хуки перед / после пакетного создания? |
| options.individualHooks | Boolean |
|
Выполнять хуки перед / после создания для каждого отдельного экземпляра? Хуки BulkCreate все равно будут выполнены, если options.hooks равно true. |
| options.ignoreDuplicates | Boolean |
|
Игнорировать дублирующиеся значения для первичных ключей? (не поддерживается postgres < 9.5) |
| options.updateOnDuplicate | Array |
|
Поля для обновления, если строка ключа уже существует (обновление при дублировании ключа)? (поддерживается только mysql). По умолчанию все поля обновляются. |
| options.transaction | Transaction |
|
Транзакция, в рамках которой выполняется запрос. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции логирования (options.logging). |
| options.returning | Boolean |
|
Добавить RETURNING * для получения автоматически сгенерированных значений (только Postgres). |
| options.searchPath | String |
|
Необязательный параметр для указания схемы search_path (только Postgres). |
Возвращает:
| Promise<Array<Model>> |
public static count(options: Object): Promise<Integer> source
Подсчитать количество записей, соответствующих заданному условию where.
Если вы предоставите параметр include , вместо этого будет подсчитано количество соответствующих ассоциаций.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.where | Object |
|
Хеш-таблица атрибутов поиска. |
| options.include | Object |
|
Параметры включения. Подробности см. в |
| options.paranoid | Boolean |
|
Установите |
| options.distinct | Boolean |
|
Применить COUNT(DISTINCT(col)) к первичному ключу или к options.col. |
| options.col | String |
|
Столбец, к которому следует применить COUNT(). |
| options.attributes | Object |
|
Используется совместно с |
| options.group | Object |
|
Для создания сложных подсчетов. Будет возвращать несколько строк по мере необходимости. |
| options.transaction | Transaction |
|
Транзакция, в рамках которой выполняется запрос. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции логирования (options.logging). |
| options.searchPath | String |
|
Необязательный параметр для указания схемы search_path (только Postgres). |
Возвращает:
| Promise<Integer> |
public static create(values: Object, options: Object): Promise<Model> source
Создаёт новую модель и вызывает save для неё.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object | ||
| options | Object |
| |
| options.raw | Boolean |
|
Если true, значения будут игнорировать сеттеры полей и виртуальных свойств. |
| options.isNewRecord | Boolean |
| |
| options.include | Array |
|
массив параметров include - используется для создания предварительно полученных/включённых экземпляров модели. См. |
| options.fields | Array |
|
Если установлено, будут сохранены только столбцы, соответствующие тем, которые указаны в fields. |
| options.fields | string[] |
|
Необязательный массив строк, представляющих столбцы базы данных. Если fields указан, будут проверены и сохранены только эти столбцы. |
| options.silent | Boolean |
|
Если true, отметка времени updatedAt не будет обновлена. |
| options.validate | Boolean |
|
Если false, валидации не будут выполняться. |
| options.hooks | Boolean |
|
Выполнить хуки before и after create / update + validate. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для логирования SQL. |
| options.benchmark | Boolean |
|
Передайте время выполнения запроса в миллисекундах как второй аргумент функции logging (options.logging). |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса. |
| options.searchPath | String |
|
Необязательный параметр для указания пути поиска схемы (только для Postgres). |
| options.returning | Boolean |
|
Возвратить затронутые строки (только для postgres). |
Возвращает:
| Promise<Model> |
См. также:
- Model#build
- Model#save
public static decrement(fields: *, options: *): Promise<this> с 4.36.0 source
Уменьшает значение одного или нескольких столбцов. Это делается в базе данных, что означает, что не используются текущие значения, хранящиеся в экземпляре. Уменьшение выполняется с помощью запроса sql SET column = column - X WHERE foo = 'bar'. Чтобы получить правильное значение после уменьшения в экземпляре, необходимо выполнить reload.
// decrement number by 1
Model.decrement('number', { where: { foo: 'bar' });
// decrement number and count by 2
Model.decrement(['number', 'count'], { by: 2, where: { foo: 'bar' } });
// decrement answer by 42, and decrement tries by -1.
// `by` is ignored, since each column has its own value
Model.decrement({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | * | ||
| options | * |
Возвращает:
| Promise<this> |
См. также:
public static describe(schema: *, options: *): Promise source
Выполняет запрос describe для таблицы. Результат будет возвращён слушателю как хеш атрибутов и их типов.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| schema | * | ||
| options | * |
Возвращает:
| Promise |
public static destroy(options: Object): Promise<Integer> source
Удалить несколько экземпляров или установить для них метку удаления (deletedAt) на текущее время, если paranoid включено.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object | ||
| options.where | Object |
|
Фильтр для удаления |
| options.hooks | Boolean |
|
Выполнять хуки до/после массового удаления? |
| options.individualHooks | Boolean |
|
Если установлено в true, метод destroy выберет все записи, соответствующие параметру where, и выполнит хуки до/после удаления для каждой строки |
| options.limit | Number |
|
Количество строк для удаления |
| options.force | Boolean |
|
Удалить вместо установки deletedAt на текущее время (применимо только если |
| options.truncate | Boolean |
|
Если установлено в true, диалекты, поддерживающие это, будут использовать TRUNCATE вместо DELETE FROM. Если таблица усечена, параметры where и limit игнорируются |
| options.cascade | Boolean |
|
Используется только в сочетании с TRUNCATE. Удаляет все таблицы, имеющие внешние ключи, ссылающиеся на указанную таблицу, или любые таблицы, добавленные в группу из-за CASCADE. |
| options.restartIdentity | Boolean |
|
Используется только в сочетании с TRUNCATE. Автоматически перезапускает последовательности, принадлежащие столбцам усеченной таблицы. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для записи SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента функции logging (options.logging). |
Возвращаемое значение:
| Promise<Integer> |
Количество строк, удалённых |
public static drop(options: Object): Promise source
Удалить таблицу, представленную этим объектом модели
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.cascade | Boolean |
|
Также удалить все объекты, зависящие от этой таблицы, такие как представления. Работает только в postgres |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для записи SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента функции logging (options.logging). |
Возвращаемое значение:
| Promise |
public static findAll(options: Object): Promise<Array<Model>> source
Найти несколько экземпляров.
Простой поиск с использованием AND и =
Model.findAll({
where: {
attr1: 42,
attr2: 'cake'
}
})
WHERE attr1 = 42 AND attr2 = 'cake'
Использование больше чем, меньше чем и т.д.
const {gt, lte, ne, in: opIn} = Sequelize.Op;
Model.findAll({
where: {
attr1: {
[gt]: 50
},
attr2: {
[lte]: 45
},
attr3: {
[opIn]: [1,2,3]
},
attr4: {
[ne]: 5
}
}
})
WHERE attr1 > 50 AND attr2 <= 45 AND attr3 IN (1,2,3) AND attr4 != 5
См. Операторы для возможных операторов
Запросы с использованием OR
const {or, and, gt, lt} = Sequelize.Op;
Model.findAll({
where: {
name: 'a project',
[or]: [
{id: [1, 2, 3]},
{
[and]: [
{id: {[gt]: 10}},
{id: {[lt]: 100}}
]
}
]
}
});
WHERE `Model`.`name` = 'a project' AND (`Model`.`id` IN (1, 2, 3) OR (`Model`.`id` > 10 AND `Model`.`id` < 100));
Обещание выполняется массивом экземпляров модели, если запрос выполнен успешно.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|
| options | Объект |
|
Хэш опций для описания области поиска |
| options.where | Объект |
|
Хэш атрибутов для описания вашего поиска. Примеры см. выше. |
| options.attributes | Массив<Строка> | Объект |
|
Список атрибутов, которые вы хотите выбрать, или объект с ключами |
| options.attributes.include | Массив<Строка> |
|
Выберите все атрибуты модели, плюс некоторые дополнительные. Полезно для агрегаций, например, |
| options.attributes.exclude | Массив<Строка> |
|
Выберите все атрибуты модели, кроме нескольких. Полезно для безопасности, например, |
| options.paranoid | Булево |
|
Если true, будут возвращены только записи, не помеченные как удаленные. Если false, будут возвращены как удалённые, так и неудалённые записи. Применяется только если |
| options.include | Массив<Объект|Модель|Строка> |
|
Список ассоциаций для жадного загрузки с помощью левого соединения. Поддерживается |
| options.include[].model | Модель |
|
Модель, которую вы хотите загрузить жадно |
| options.include[].as | Строка |
|
Псевдоним связи в случае, если модель, которую нужно загрузить жадно, имеет псевдоним. Для |
| options.include[].association | Ассоциация |
|
Ассоциация, которую вы хотите загрузить жадно. (Это можно использовать вместо пары модель/as) |
| options.include[].where | Объект |
|
Условие WHERE, применяемое к дочерним моделям. Обратите внимание, что это преобразует жадную загрузку во внутреннее соединение, если явно не задан |
| options.include[].or | Булево |
|
Использовать оператор OR вместо AND при объединении ON и WHERE условий. |
| options.include[].on | Объект |
|
Укажите собственное условие ON для соединения. |
| options.include[].attributes | Массив<Строка> |
|
Список атрибутов для выбора из дочерней модели |
| options.include[].required | Булево |
|
Если true, преобразует во внутреннее соединение, что означает, что родительская модель будет загружена только в том случае, если у нее есть соответствующие дочерние элементы. True, если |
| options.include[].separate | Булево |
|
Если true, выполняет отдельный запрос для получения связанных экземпляров, поддерживается только для ассоциаций hasMany. |
| options.include[].limit | Число |
|
Ограничить объединённые строки, поддерживается только с include.separate=true |
| options.include[].through.where | Объект |
|
Фильтрация по модели соединения для отношений belongsToMany |
| options.include[].through.attributes | Массив |
|
Список атрибутов для выбора из модели соединения для отношений belongsToMany |
| options.include[].include | Массив<Объект|Модель|Строка> |
|
Загрузка дополнительных вложенных связанных моделей |
| options.order | Массив | fn | col | literal |
|
Указывает порядок сортировки. Используя массив, вы можете указать несколько столбцов/функций для сортировки. Каждый элемент может быть дополнительно заключён в массив из двух элементов. Первый элемент — столбец/функция для сортировки, второй — направление. Например: |
| options.limit | Число |
| |
| options.offset | Число |
| |
| options.transaction | Транзакция |
|
Транзакция для выполнения запроса |
| options.lock | Строка | Объект |
|
Заблокировать выбранные строки. Возможные варианты — transaction.LOCK.UPDATE и transaction.LOCK.SHARE. Postgres также поддерживает transaction.LOCK.KEY_SHARE, transaction.LOCK.NO_KEY_UPDATE и специфические блокировки модели с соединениями. См. transaction.LOCK для примера |
| options.raw | Булево |
|
Возвратить сырой результат. См. sequelize.query для получения дополнительной информации. |
| options.logging | Функция |
|
Функция, которая выполняется при выполнении запроса для регистрации SQL. |
| options.benchmark | Булево |
|
Передать время выполнения запроса в миллисекундах во второй аргумент функции регистрации (options.logging). |
| options.having | Объект |
| |
| options.searchPath | Строка |
|
Необязательный параметр для указания схемы search_path (только Postgres) |
| options.rejectOnEmpty | Булево | Ошибка |
|
Выбрасывает ошибку, когда записи не найдены |
Возврат:
| Обещание<Массив<Модель>> |
публичный статический findAndCountAll(findOptions: Объект): Обещание<{count: Целое число, rows: Модель[]}> исходный код
Найдите все строки, соответствующие вашему запросу, в заданном смещении/пределе и получите общее количество строк, соответствующих вашему запросу. Это очень полезно для постраничной навигации
Model.findAndCountAll({
where: ...,
limit: 12,
offset: 12
}).then(result => {
...
})
В приведенном выше примере result.rows будет содержать строки с 13-й по 24-ю, а result.count вернёт общее количество строк, соответствующих вашему запросу.
Когда вы добавляете include, будут добавлены только те, которые необходимы (либо потому, что у них есть условие where, либо потому, что required явно установлено в true для include).
Предположим, что вы хотите найти всех пользователей, у которых есть прикреплённый профиль:
User.findAndCountAll({
include: [
{ model: Profile, required: true}
],
limit 3
});
Поскольку include для Profile имеет required установленное, это приведёт к внутреннему объединению, и будут подсчитаны только пользователи, у которых есть профиль. Если мы удалим required из include, будут подсчитаны как пользователи с профилем, так и без него.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| findOptions | Объект |
|
См. findAll |
Возврат:
| Обещание<{count: Целое число, rows: Модель[]}> |
См. также:
- Модель.findAll для спецификации параметров find и запроса
публичный статический findByPk(id: Число | Строка | Буфер, options: Объект): Обещание<Модель> исходный код
Поиск одной записи по её первичному ключу.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| id | Число | Строка | Буфер |
Значение первичного ключа искомой записи. | |
| options | Объект |
| |
| options.transaction | Транзакция |
|
Транзакция, под которой выполняется запрос |
| options.searchPath | Строка |
|
Необязательный параметр для задания схемы search_path (только Postgres) |
Возврат:
| Обещание<Модель> |
См. также:
- Модель.findAll для полного объяснения параметров
публичный статический findCreateFind(options: Объект): Обещание<Модель, создано> исходный код
Более производительный findOrCreate, который не будет работать в транзакции (по крайней мере, не в postgres). Выполнит find, если пусто, попытается создать, если уникальное ограничение, попытается найти снова
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект | ||
| options.where | Объект |
where Словарь атрибутов поиска. | |
| options.defaults | Объект |
|
Значения по умолчанию для использования при создании новой записи |
Возврат:
| Обещание<Модель, создано> |
См. также:
- Модель.findAll для полной спецификации find и параметров
публичный статический findOne(options: Объект): Обещание<Модель> исходный код
Поиск одной записи. Применяется LIMIT 1, поэтому слушатель всегда будет вызывать с одной записью.
Псевдоним: find
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект |
|
Словарь параметров для описания области поиска |
| options.transaction | Транзакция |
|
Транзакция, под которой выполняется запрос |
| options.searchPath | Строка |
|
Необязательный параметр для задания схемы search_path (только Postgres) |
Возврат:
| Обещание<Модель> |
См. также:
- Модель.findAll для объяснения параметров
public static findOrBuild(options: Object): Promise<Модель, initialized> source
Найти строку, соответствующую запросу, или создать (но не сохранять) строку, если не найдена. Успешный результат промиса будет (экземпляр, initialized) — обязательно используйте .spread().
Псевдоним: findOrInitialize
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект | ||
| options.where | Объект |
Хэш атрибутов поиска. | |
| options.defaults | Объект |
|
Значения по умолчанию для использования при создании нового экземпляра. |
| options.transaction | Объект |
|
Транзакция для выполнения запроса. |
| options.logging | Функция |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.benchmark | Булево |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции регистрации (options.logging). |
Возвращает:
| Promise<Модель, initialized> |
public static findOrCreate(options: Object): Promise<Модель, created> source
Найти строку, соответствующую запросу, или создать и сохранить строку, если не найдена. Успешный результат промиса будет (экземпляр, создано) — обязательно используйте .spread().
Если в options объекте не передана транзакция, будет создана новая транзакция внутри, чтобы предотвратить состояние гонки, когда соответствующая строка создается другим соединением после поиска, но до вызова вставки. Однако, в SQLite в некоторых случаях обработать такую ситуацию не всегда возможно, в частности, если одна транзакция вставляет, а другая пытается выбрать до того, как первая завершит комит. В этом случае вместо этого будет выброшено исключение sequelize. TimeoutError. Если транзакция создается, вместо нее будет создан чекпоинт, и любые нарушения уникальных ограничений будут обработаны внутри.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект | ||
| options.where | Объект |
Хэш атрибутов поиска. | |
| options.defaults | Объект |
|
Значения по умолчанию для использования при создании нового экземпляра. |
| options.transaction | Транзакция |
|
Транзакция для выполнения запроса. |
Возвращает:
| Promise<Модель, created> |
См. также:
- Модель.findAll для полного описания поиска и параметров
public static getTableName(): Строка | Объект source
Получить имя таблицы модели с учетом схемы. Метод вернет имя как строку, если у модели нет схемы, или объект со свойствами tableName, schema и delimiter.
Возвращает:
| Строка | Объект |
public static hasMany(target: Model, options: object): HasMany source
Создаёт ассоциацию 1:м между этим (источником) и предоставленным целевым объектом. Внешний ключ добавляется к целевому объекту.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model | ||
| options | object |
| |
| options.hooks | boolean |
|
Установите в значение true, чтобы запускать хуки before-/afterDestroy при удалении связанной модели из-за каскадного удаления. Например, если |
| options.as | string | object |
|
Псевдоним этой модели. Если вы передаёте строку, она должна быть множественным числом, и будет приведена к единственному числу с помощью node.inflection. Если вы хотите самостоятельно контролировать единственное число, передайте объект с ключами |
| options.foreignKey | string | object |
|
Имя внешнего ключа в целевой таблице или объект, представляющий определение типа для внешнего столбца (см. |
| options.sourceKey | string |
|
Имя поля, используемого в качестве ключа для ассоциации в исходной таблице. По умолчанию используется первичный ключ исходной таблицы. |
| options.scope | object |
|
Набор ключ/значение, который будет использоваться для создания и поиска ассоциаций по умолчанию в целевой таблице. (sqlite не поддерживается для N:M) |
| options.onDelete | string |
|
SET NULL, если внешний ключ допускает NULL, CASCADE в противном случае. |
| options.onUpdate | string |
| |
| options.constraints | boolean |
|
Следует ли включить ограничения on update и on delete для внешнего ключа. |
Возвращаемое значение:
| HasMany |
Пример:
User.hasMany(Profile) // This will add userId to the profile table public static hasOne(target: Model, options: object): HasOne source
Создаёт ассоциацию между этим (источником) и предоставленным целевым объектом. Внешний ключ добавляется к целевому объекту.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model | ||
| options | object |
| |
| options.hooks | boolean |
|
Установите в значение true, чтобы запускать хуки before-/afterDestroy при удалении связанной модели из-за каскадного удаления. Например, если |
| options.as | string |
|
Псевдоним этой модели в единственном числе. См. также опцию |
| options.foreignKey | string | object |
|
Имя внешнего ключа в целевой таблице или объект, представляющий определение типа для внешнего столбца (см. |
| options.onDelete | string |
|
SET NULL, если внешний ключ допускает NULL, CASCADE в противном случае. |
| options.onUpdate | string |
| |
| options.constraints | boolean |
|
Следует ли включить ограничения on update и on delete для внешнего ключа. |
| options.uniqueKey | string |
|
Пользовательское имя для уникального ограничения. |
Возвращаемое значение:
| HasOne |
Пример:
User.hasOne(Profile) // This will add userId to the profile table public static increment(fields: String | Array | Object, options: Object): Promise<this> source
Увеличьте значение одного или нескольких столбцов. Это выполняется в базе данных, что означает, что он не использует значения, хранящиеся в настоящее время в экземпляре. Увеличение выполняется с помощью запроса SET column = column + X WHERE foo = 'bar'. Чтобы получить правильное значение после увеличения в экземпляре, необходимо выполнить перезагрузку.
// increment number by 1
Model.increment('number', { where: { foo: 'bar' });
// increment number and count by 2
Model.increment(['number', 'count'], { by: 2, where: { foo: 'bar' } });
// increment answer by 42, and decrement tries by 1.
// `by` is ignored, since each column has its own value
Model.increment({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | String | Array | Object |
Если предоставлена строка, этот столбец увеличивается на значение | |
| options | Object | ||
| options.where | Object | ||
| options.by | Integer |
|
Число, на которое нужно увеличить |
| options.silent | Boolean |
|
Если true, метка времени updatedAt не будет обновлена. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.transaction | Transaction |
| |
| options.searchPath | String |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
Возвращает:
| Promise<this> |
См. также:
public static init(attributes: Object, options: Object): Model source
Инициализирует модель, представляющую таблицу в базе данных, с атрибутами и параметрами.
Столбцы таблицы определяются хэшем, который передается в качестве второго аргумента. Каждый атрибут хэша представляет столбец. Короткие определение таблицы может выглядеть так:
Project.init({
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})
sequelize.models.modelName // The model will now be available in models under the class name
Как показано выше, определения столбцов могут быть строками, ссылкой на один из предопределенных типов данных в конструкторе Sequelize или объектом, который позволяет вам указать тип столбца и другие атрибуты, такие как значения по умолчанию, ограничения внешних ключей и настраиваемые сеттеры и геттеры.
Список возможных типов данных см. в DataTypes
Дополнительную информацию о валидации см. в http://docs.sequelizejs.com/manual/tutorial/models-definition.html#validations
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attributes | Объект |
Объект, где каждый атрибут является столбцом таблицы. Каждый столбец может быть типом данных, строкой или объектом описания типа с указанными ниже свойствами: | |
| attributes.column | Строка | ТипыДанных | Объект |
Описание столбца базы данных | |
| attributes.column.type | Строка | ТипыДанных |
Строка или тип данных | |
| attributes.column.allowNull | Булево |
|
Если false, столбец будет иметь ограничение NOT NULL, и валидация непустоты будет выполнена перед сохранением экземпляра. |
| attributes.column.defaultValue | любой |
|
Литеральное значение по умолчанию, JavaScript-функция или SQL-функция (см. |
| attributes.column.unique | Строка | Булево |
|
Если true, столбец получит ограничение уникальности. Если указана строка, столбец будет частью составного уникального индекса. Если несколько столбцов имеют одинаковую строку, они будут частью одного и того же уникального индекса |
| attributes.column.primaryKey | Булево |
| |
| attributes.column.field | Строка |
|
Если задано, sequelize сопоставит имя атрибута с другим именем в базе данных |
| attributes.column.autoIncrement | Булево |
| |
| attributes.column.comment | Строка |
| |
| attributes.column.references | Строка | Модель |
|
Объект с конфигурациями ссылок |
| attributes.column.references.model | Строка | Модель |
|
Если этот столбец ссылается на другую таблицу, укажите ее здесь как модель или строку |
| attributes.column.references.key | Строка |
|
Столбец внешней таблицы, на который ссылается этот столбец |
| attributes.column.onUpdate | Строка |
|
Что должно произойти при обновлении связанного ключа. Одно из CASCADE, RESTRICT, SET DEFAULT, SET NULL или NO ACTION |
| attributes.column.onDelete | Строка |
|
Что должно произойти при удалении связанного ключа. Одно из CASCADE, RESTRICT, SET DEFAULT, SET NULL или NO ACTION |
| attributes.column.get | Функция |
|
Укажите пользовательский метод получения для этого столбца. Используйте |
| attributes.column.set | Функция |
|
Укажите пользовательский метод установки для этого столбца. Используйте |
| attributes.validate | Объект |
|
Объект валидаций, которые должны выполняться для этого столбца при каждом сохранении модели. Может быть именем валидации, предоставленной validator.js, функцией валидации, предоставленной путем расширения validator.js (см. свойство |
| options | Объект |
Эти параметры объединяются с параметрами по умолчанию define, предоставленными конструктору Sequelize. | |
| options.sequelize | Объект |
Определите экземпляр sequelize для присоединения к новой модели. Вызовите ошибку, если он не предоставлен. | |
| options.modelName | Строка |
|
Установите имя модели. По умолчанию оно такое же, как имя класса. |
| options.defaultScope | Объект |
|
Определите область поиска по умолчанию для этой модели. Области поиска имеют ту же форму, что и параметры, передаваемые в find/findAll |
| options.scopes | Объект |
|
Дополнительные области поиска, определенные так же, как defaultScope выше. См. |
| options.omitNull | Булево |
|
Не сохранять значения null. Это означает, что все столбцы со значениями null не будут сохранены. |
| options.timestamps | Булево |
|
Добавляет метки времени createdAt и updatedAt к модели. |
| options.paranoid | Булево |
|
Вызов |
| options.underscored | Булево |
|
Преобразует все столбцы с camelCase в underscored, если значение true. Не повлияет на поля timestamp, явно переименованные в параметрах модели, и не повлияет на поля с явно установленным параметром |
| options.underscoredAll | Булево |
|
Преобразует имена моделей с camelCase в underscored имена таблиц, если значение true. Не изменит имя модели, если freezeTableName установлено в true |
| options.freezeTableName | Булево |
|
Если freezeTableName имеет значение true, sequelize не будет пытаться изменить имя модели для получения имени таблицы. В противном случае имя модели будет сделано множественным числом |
| options.name | Объект |
|
Объект с двумя атрибутами, |
| options.name.singular | Строка |
| |
| options.name.plural | Строка |
| |
| options.indexes | Массив<Объект> |
| |
| options.indexes[].name | Строка |
|
Имя индекса. По умолчанию: имя модели + _ + конкатенация полей |
| options.indexes[].type | Строка |
|
Тип индекса. Используется только в mysql. Один из |
| options.indexes[].method | Строка |
|
Метод создания индекса ( |
| options.indexes[].unique | Булево |
|
Индекс должен быть уникальным? Также может быть активирован установкой типа на |
| options.indexes[].concurrently | Булево |
|
PostgreSQL создаст индекс без блокировки записи. Только для Postgres |
| options.indexes[].fields | Массив<Строка|Объект> |
|
Массив индексируемых полей. Каждое поле может быть строкой, содержащей имя поля, объектом sequelize (например, |
| options.createdAt | Строка | Булево |
|
Заменить имя столбца createdAt, если задано строкой, или отключить, если false. Маркеры времени должны быть true. Не влияет на underscored. |
| options.updatedAt | Строка | Булево |
|
Заменить имя столбца updatedAt, если задано строкой, или отключить, если false. Маркеры времени должны быть true. Не влияет на underscored. |
| options.deletedAt | Строка | Булево |
|
Заменить имя столбца deletedAt, если задано строкой, или отключить, если false. Маркеры времени должны быть true. Не влияет на underscored. |
| options.tableName | Строка |
|
По умолчанию: множественное число от имени модели, если freezeTableName — true, используется имя модели напрямую |
| options.schema | Строка |
| |
| options.engine | Строка |
| |
| options.charset | Строка |
| |
| options.comment | Строка |
| |
| options.collate | Строка |
| |
| options.initialAutoIncrement | Строка |
|
Установите начальное значение AUTO_INCREMENT для таблицы в MySQL. |
| options.hooks | Объект |
|
Объект функций обратного вызова, которые вызываются до и после определенных событий жизненного цикла. Возможные хуки: beforeValidate, afterValidate, validationFailed, beforeBulkCreate, beforeBulkDestroy, beforeBulkUpdate, beforeCreate, beforeDestroy, beforeUpdate, afterCreate, afterDestroy, afterUpdate, afterBulkCreate, afterBulkDestory и afterBulkUpdate. См. Hooks для получения дополнительной информации о функциях обратного вызова и их сигнатурах. Каждая свойство может быть функцией или массивом функций. |
| options.validate | Объект |
|
Объект проверок для всей модели. Проверки имеют доступ ко всем значениям модели через |
Возвращаемое значение:
| Модель |
См. также:
- DataTypes
- Hooks
публичный статический max(field: Строка, options: Объект): Promise<Любой> источник
Найти максимальное значение поля
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| field | Строка | ||
| options | Объект |
|
См. агрегирование |
Возвращаемое значение:
| Promise<Любой> |
См. также:
- Model#aggregate для параметров
публичный статический min(field: Строка, options: Объект): Promise<Любой> источник
Найти минимальное значение поля
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| field | Строка | ||
| options | Объект |
|
См. агрегирование |
Возвращаемое значение:
| Promise<Любой> |
См. также:
- Model#aggregate для параметров
public static removeAttribute(attribute: String) source
Удалить атрибут из определения модели
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attribute | String |
|
public static restore(options: Object): Promise<undefined> source
Восстановить несколько экземпляров, если paranoid включен.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object | ||
| options.where | Object |
|
Фильтр восстановления |
| options.hooks | Boolean |
|
Выполнять хуки до/после массового восстановления? |
| options.individualHooks | Boolean |
|
Если установлено в значение true, восстановление найдёт все записи в параметре where и выполнит хуки до/после bulkRestore для каждой строки |
| options.limit | Number |
|
Сколько строк восстановить (только для mysql) |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для логирования sql. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции логирования (options.logging). |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
Возвращает:
| Promise<undefined> |
public static schema(schema: String, options: Object): this source
Применить схему к этой модели. Для postgres это фактически поместит схему перед именем таблицы - "schema"."tableName", в то время как для mysql и sqlite схема будет добавлена перед именем таблицы - 'schema.tablename'.
Этот метод предназначен для случаев, когда одна и та же модель необходима в нескольких схемах. В таком случае важно вызвать model.schema(schema, [options]).sync() для каждой модели, чтобы убедиться, что модели созданы в правильной схеме.
Если нужна одна стандартная схема на модель, установите параметр options.schema='schema' во время вызова define() для модели.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| schema | String |
Имя схемы | |
| options | Object |
| |
| options.schemaDelimiter | String |
|
Символ(ы), разделяющий имя схемы и имя таблицы |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для логирования sql. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции логирования (options.logging). |
Возвращает:
| this |
См.:
- Sequelize#define для получения более подробной информации о настройке стандартной схемы.
public static scope(options: Array | Object | String | null): Model source
Применить созданный в define scope к модели. Сначала посмотрим, как создать scopes:
const Model = sequelize.define('model', attributes, {
defaultScope: {
where: {
username: 'dan'
},
limit: 12
},
scopes: {
isALie: {
where: {
stuff: 'cake'
}
},
complexFunction: function(email, accessLevel) {
return {
where: {
email: {
[Op.like]: email
},
accesss_level {
[Op.gte]: accessLevel
}
}
}
}
}
})
Теперь, так как вы определили стандартный scope, каждый раз, когда вы делаете Model.find, стандартный scope добавляется к вашему запросу. Вот несколько примеров:
Model.findAll() // WHERE username = 'dan'
Model.findAll({ where: { age: { [Op.gt]: 12 } } }) // WHERE age > 12 AND username = 'dan'
Чтобы вызвать функции scope, вы можете сделать так:
Model.scope({ method: ['complexFunction', 'dan@sequelize.com', 42]}).findAll()
// WHERE email like 'dan@sequelize.com%' AND access_level >= 42
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Array | Object | String | null |
Применяемый(ые) scope(ы). Scope(ы) могут передаваться как последовательные аргументы или как массив аргументов. Для применения простых scopes и scope функций без аргументов, передайте их как строки. Для scope функций, передайте объект с |
Возвращает:
| Model |
Ссылка на модель с применённым(ыми) scope(ами). Повторный вызов scope на возвращённой модели очистит предыдущий scope. |
public static sum(field: String, options: Object): Promise<Number> source
Найти сумму поля
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| field | String | ||
| options | Object |
|
См. агрегирование |
Возвращаемое значение:
| Promise<Number> |
См. также:
- Model#aggregate для параметров
public static sync(options: *): Promise<this> source
Синхронизировать эту модель с БД, то есть создать таблицу. При успехе, колбэк будет вызван с экземпляром модели (this)
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | * |
Возвращаемое значение:
| Promise<this> |
См. также:
- Sequelize#sync для параметров
public static truncate(options: object): Promise source
Удалить все экземпляры модели. Это удобный метод для Model.destroy({ truncate: true }).
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | object |
|
Параметры, передаваемые в Model.destroy помимо truncate |
| options.cascade | Boolean | function |
|
Используется только совместно с TRUNCATE. Обнуляет все таблицы, имеющие внешние ключи, ссылающиеся на указанную таблицу или на любые таблицы, добавленные в группу из-за CASCADE. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.logging | Boolean | function |
|
Функция, которая записывает запросы SQL, или false для отключения записи |
| options.benchmark | Boolean |
|
Передает время выполнения запроса в миллисекундах как второй аргумент функции логирования (options.logging). |
| options.searchPath | String |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
Возвращаемое значение:
| Promise |
См. также:
- Model#destroy для получения более подробной информации
public static update(values: Object, options: Object): Promise<Array<affectedCount, affectedRows>> source
Обновление нескольких записей, соответствующих параметрам where. Обещание возвращает массив из одного или двух элементов. Первый элемент всегда — количество изменённых строк, а второй — сами изменённые строки (поддерживается только в postgres с options.returning true.)
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object | ||
| options | Object | ||
| options.where | Object |
Параметры для описания области поиска. | |
| options.paranoid | Boolean |
|
Если true, обновляются только записи, не помеченные как удалённые. Если false, обновляются и удалённые, и не удалённые записи. Применяется только если |
| options.fields | Array |
|
Поля для обновления (по умолчанию — все поля) |
| options.validate | Boolean |
|
Каждая строка должна пройти проверку перед обновлением. Весь запрос обновления завершится ошибкой, если одна строка не пройдёт проверку. |
| options.hooks | Boolean |
|
Выполнять хуки до/после массового обновления? |
| options.sideEffects | Boolean |
|
Обновлять ли побочные эффекты виртуальных сеттеров? |
| options.individualHooks | Boolean |
|
Выполнять хуки до/после обновления? Если true, это выполнит SELECT, за которым последуют отдельные UPDATE. SELECT необходим, так как данные строки должны передаваться хукам. |
| options.returning | Boolean |
|
Возвращать изменённые строки (только для postgres) |
| options.limit | Number |
|
Количество строк для обновления (только для mysql и mariadb, реализовано как TOP(n) для MSSQL; для sqlite поддерживается только при наличии rowid) |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для логирования SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента функции логирования (options.logging). |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса. |
| options.silent | Boolean |
|
Если true, отметка времени updatedAt не будет обновляться. |
Возвращает:
| Promise<Array<affectedCount, affectedRows>> |
public static upsert(values: Object, options: Object): Promise<created> source
Вставка или обновление одной строки. Обновление будет выполнено, если найдена строка, соответствующая предоставленным значениям по первичному ключу или уникальному ключу. Обратите внимание, что уникальный индекс должен быть определён в вашей модели sequelize, а не только в таблице. В противном случае может произойти нарушение ограничения уникальности, поскольку sequelize не может идентифицировать строку, которая должна быть обновлена.
Подробности реализации:
- MySQL - Реализовано как один запрос
INSERT values ON DUPLICATE KEY UPDATE values - PostgreSQL - Реализовано как временная функция с обработкой исключений: INSERT EXCEPTION WHEN unique_constraint UPDATE
- SQLite - Реализовано как два запроса
INSERT; UPDATE. Это означает, что обновление выполняется независимо от того, существовала строка ранее или нет - MSSQL - Реализовано как один запрос с использованием
MERGEиWHEN (NOT) MATCHED THENПримечание, что SQLite возвращает неопределённое значение для created, независимо от того, была строка создана или обновлена. Это связано с тем, что SQLite всегда выполняет INSERT OR IGNORE + UPDATE в одном запросе, поэтому нет способа узнать, была ли строка вставлена или нет.
Псевдоним: insertOrUpdate
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object | ||
| options | Object |
| |
| options.validate | Boolean |
|
Выполнить валидацию перед вставкой строки |
| options.fields | Array |
|
Поля для вставки/обновления. По умолчанию все изменённые поля |
| options.hooks | Boolean |
|
Выполнить перед/после вставки/обновления хуки? |
| options.returning | Boolean |
|
Добавить RETURNING * для получения сгенерированных значений (только Postgres) |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.benchmark | Boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента функции логирования (options.logging). |
| options.searchPath | String |
|
Необязательный параметр для указания schema search_path (только Postgres) |
Возвращает:
| Promise<created> |
Возвращает логическое значение, указывающее, была ли строка создана или обновлена. Для Postgres/MSSQL с (options.returning=true), возвращает запись и boolean created с подписью |
Публичные конструкторы
public constructor(values: Object, options: Object) source
Создаёт новую модель.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object |
|
объект пар ключ-значение |
| options | Object |
| |
| options.raw | Boolean |
|
Если true, значения будут игнорировать поля и виртуальные сеттеры. |
| options.isNewRecord | Boolean |
| |
| options.include | Array |
|
массив опций include - Используется для построения предварительно извлечённых/включённых экземпляров моделей. См. |
Публичные члены
public isNewRecord: Boolean: * source
Возвращает true, если этот экземпляр ещё не был сохранён в базе данных
Свойства:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| isNewRecord | * |
Возвращает:
| Boolean |
Свойства возвращаемого значения:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| isNewRecord | * |
Публичные методы
public changed(key: String): Boolean | Array source
Если changed вызывается со строкой, он вернёт булево значение, указывающее, отличается ли значение данного ключа в dataValues от значения в _previousDataValues.
Если changed вызывается без аргумента, он вернёт массив ключей, которые изменились.
Если changed вызывается без аргумента и ключи не изменились, он вернёт false.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String |
|
Возвращаемое значение:
| Boolean | Array |
public decrement(fields: String | Array | Object, options: Object): Promise source
Уменьшает значение одного или нескольких столбцов. Это делается в базе данных, что означает, что он не использует значения, хранящиеся в настоящее время в экземпляре. Уменьшение выполняется с помощью
SET column = column - X
запроса. Обновлённый экземпляр будет возвращён по умолчанию в Postgres. Однако в других диалектах вам потребуется выполнить reload, чтобы получить новые значения.
instance.decrement('number') // decrement number by 1
instance.decrement(['number', 'count'], { by: 2 }) // decrement number and count by 2
instance.decrement({ answer: 42, tries: 1}, { by: 2 }) // decrement answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | String | Array | Object |
Если задана строка, этот столбец уменьшается на значение | |
| options | Object |
| |
| options.by | Integer |
|
Число, на которое уменьшать |
| options.silent | Boolean |
|
Если true, отметка времени updatedAt не будет обновляться. |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для логирования SQL. |
| options.transaction | Transaction |
| |
| options.searchPath | String |
|
Необязательный параметр для указания schema search_path (только для Postgres) |
| options.returning | Boolean |
|
Добавьте RETURNING * для получения автоматически сгенерированных значений (только для Postgres) |
Возвращаемое значение:
| Promise |
См. также:
public destroy(options: Object): Promise<undefined> source
Удалить строку, соответствующую этому экземпляру. В зависимости от вашего настроя paranoid, строка будет либо полностью удалена, либо её отметка времени deletedAt будет установлена на текущее время.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.force | Boolean |
|
Если true, модели paranoid будут фактически удалены |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для логирования SQL. |
| options.transaction | Transaction |
| |
| options.searchPath | String |
|
Необязательный параметр для указания schema search_path (только для Postgres) |
Возвращаемое значение:
| Promise<undefined> |
public equals(other: Model): Boolean source
Проверить, относятся ли этот и other экземпляры к одной и той же строке
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| other | Model |
Возвращаемое значение:
| Boolean |
public equalsOneOf(others: Array): Boolean source
Проверить, равен ли этот экземпляр одному из others, вызвав equals
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| others | Array |
Возвращаемое значение:
| Boolean |
public get(key: String, options: Object): Object | any source
Если ключ не задан, возвращает все значения экземпляра, вызывая также виртуальные геттеры.
Если ключ задан и для ключа существует поле или виртуальный геттер, будет вызван этот геттер; в противном случае будет возвращено значение для ключа.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String |
| |
| options | Object |
| |
| options.plain | Boolean |
|
Если установлено в true, включенные экземпляры будут возвращены как обычные объекты. |
| options.raw | Boolean |
|
Если установлено в true, поля и виртуальные сеттеры будут проигнорированы. |
Возвращаемое значение:
| Object | any |
public getDataValue(key: String): any source
Получить значение базового значения данных
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String |
Возвращаемое значение:
| any |
public increment(fields: String | Array | Object, options: Object): Promise<this> с 4.0.0 source
Увеличить значение одного или нескольких столбцов. Это делается в базе данных, что означает, что он не использует значения, в настоящее время хранящиеся в экземпляре. Увеличение выполняется с помощью
SET column = column + X
запроса. Обновленный экземпляр будет возвращен по умолчанию в Postgres. Однако в других диалектах вам потребуется выполнить перезагрузку, чтобы получить новые значения.
instance.increment('number') // increment number by 1
instance.increment(['number', 'count'], { by: 2 }) // increment number and count by 2
instance.increment({ answer: 42, tries: 1}, { by: 2 }) // increment answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | String | Array | Object |
Если предоставлена строка, этот столбец увеличивается на значение | |
| options | Object |
| |
| options.by | Integer |
|
Число, на которое нужно увеличить |
| options.silent | Boolean |
|
Если true, метка времени updatedAt не будет обновлена. |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для протоколирования sql. |
| options.transaction | Transaction |
| |
| options.searchPath | String |
|
Необязательный параметр для указания пути поиска схемы (только для Postgres) |
| options.returning | Boolean |
|
Добавить RETURNING * для получения сгенерированных автоматически значений (только для Postgres) |
Возвращаемое значение:
| Promise<this> |
См. также:
public isSoftDeleted(): Boolean source
Вспомогательный метод для определения, является ли экземпляр «мягко удаленным». Это особенно полезно, если реализатор переименовал атрибут deletedAt на что-то другое. Этот метод требует, чтобы paranoid был включен.
Возвращаемое значение:
| Boolean |
public previous(key: String): any | Array<any> source
Возвращает предыдущее значение для ключа из _previousDataValues.
Если вызывается без ключа, возвращаются предыдущие значения для всех измененных значений.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String |
|
Возвращаемое значение:
| any | Array<any> |
public reload(options: Object): Promise<this> source
Обновить текущий экземпляр на месте, т.е. обновить объект текущими данными из базы данных и вернуть тот же объект. Это отличается от выполнения find(Instance.id), так как это создаст и вернёт новый экземпляр. С помощью этого метода все ссылки на экземпляр обновляются с новыми данными, и новые объекты не создаются.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры, передаваемые в |
| options.logging | Функция |
|
Функция, которая выполняется при выполнении запроса для логирования SQL. |
Возвращаемое значение:
| Promise<this> |
См. также:
public restore(options: Object): Promise<undefined> source
Восстановить строку, соответствующую этому экземпляру. Доступно только для моделей с параметром paranoid.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.logging | Функция |
|
Функция, которая выполняется при выполнении запроса для логирования SQL. |
| options.transaction | Транзакция |
|
Возвращаемое значение:
| Promise<undefined> |
public save(options: Object): Promise<this|Errors.ValidationError> source
Проверить этот экземпляр и, если проверка пройдёт успешно, сохранить его в базе данных. Будут сохранены только изменённые поля, и ничего не будет сделано, если поля не изменились.
При успехе коллбэк будет вызван с этим экземпляром. При ошибке проверки коллбэк будет вызван с экземпляром Sequelize.ValidationError. Эта ошибка будет иметь свойство для каждого из полей, для которых проверка не прошла, с сообщением об ошибке для этого поля.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
| |
| options.fields | строка[] |
|
Необязательный массив строк, представляющий столбцы базы данных. Если fields предоставлен, будут проверены и сохранены только эти столбцы. |
| options.silent | Булево |
|
Если true, метка времени updatedAt не будет обновляться. |
| options.validate | Булево |
|
Если false, проверки не будут выполняться. |
| options.hooks | Булево |
|
Выполнять перед созданием/обновлением + проверки хуки |
| options.logging | Функция |
|
Функция, которая выполняется при выполнении запроса для логирования SQL. |
| options.transaction | Транзакция |
| |
| options.searchPath | Строка |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
| options.returning | Булево |
|
Добавить RETURNING * для получения сгенерированных значений (только Postgres) |
Возвращаемое значение:
| Promise<this|Errors.ValidationError> |
public set(key: String | Object, value: any, options: Object): * source
Метод set используется для обновления значений в экземпляре (представление экземпляра Sequelize, помните, что ничего не будет сохранено, пока вы не вызовете save). В самом простом случае set обновит значение, хранящееся в базовом объекте dataValues. Однако, если для ключа определена пользовательская функция-сеттер, будет вызвана именно она. Чтобы обойти сеттер, вы можете передать raw: true в объект options.
Если set вызывается с объектом, он перебирает его и рекурсивно вызывает set для каждой пары ключ-значение. Если вы установите raw в true, базовые dataValues будут либо напрямую установлены в переданный объект, либо будут использованы для расширения dataValues, если в dataValues уже есть значения.
При вызове set предыдущее значение поля сохраняется и устанавливается флаг изменения (см. changed).
Метод set также может использоваться для создания экземпляров для ассоциаций, если у вас есть значения для них. При использовании set с ассоциациями необходимо убедиться, что ключ свойства соответствует псевдониму ассоциации, а также что установлены соответствующие опции include (из .build() или .find()).
Если вызов set используется с точкой, разделяющей ключ, для атрибута JSON/JSONB, значение будет установлено вложенно, и весь объект будет помечен как изменённый.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String | Object | ||
| value | any | ||
| options | Object |
| |
| options.raw | Boolean |
|
Если установлено в true, поля и виртуальные сеттеры будут проигнорированы |
| options.reset | Boolean |
|
Очистить все ранее установленные значения данных |
Возвращает:
| * |
См. также:
- Model.findAll для получения дополнительной информации об include
public setDataValue(key: String, value: any) source
Обновить базовое значение данных
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | String | ||
| value | any |
public toJSON(): object source
Преобразовать экземпляр в JSON-представление. Выполняет вызов get без ключей. Это означает получение всех значений из базы данных и применение всех пользовательских геттеров.
Возвращает:
| object |
См. также:
public update(updates: Object, options: Object): Promise<this> source
Это то же самое, что вызов set, а затем save, но сохраняет только точные переданные значения, что делает его более атомным и безопасным.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| updates | Object |
См. | |
| options | Object |
См. |
Возвращает:
| Promise<this> |
См. также:
public validate(options: Object): Promise<undefined> source
Проверить атрибуты этого экземпляра в соответствии с правилами валидации, заданными в определении модели.
Обещание выполняется только в том случае, если валидация прошла успешно; в противном случае оно отклоняется с экземпляром Error, содержащим записи { имя_поля : [сообщения_об_ошибках] }.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Опции, которые передаются валидатору |
| options.skip | Array |
|
Массив строк. Все свойства, которые находятся в этом массиве, не будут проверены |
| options.fields | Array |
|
Массив строк. Только свойства, которые находятся в этом массиве, будут проверены |
| options.hooks | Boolean |
|
Выполнить перед и после хуков валидации |
Возвращает:
| Promise<undefined> |
public where(checkVersion: *): Object source
Получить объект, представляющий запрос для этого экземпляра, использовать с options.where
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| checkVersion | * |
Возвращаемое значение:
| Object |
Свойства возвращаемого значения:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| where | * |
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v4/class/lib/model.js~Model.html