Модель
Модель представляет собой таблицу в базе данных. Экземпляры этого класса представляют собой строку базы данных.
Экземпляры модели работают с концепцией свойства 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 | Добавить новый область видимости в модель. | |
| public static | Выполнить метод агрегирования для указанного поля. | |
| public static | Создаёт связь между текущей (источником) и целевой моделью. | |
| public static | belongsToMany(target: Model, options: Object): BelongsToMany Создать связь многие-ко-многим с таблицей связи. | |
| public static | Создать новый экземпляр модели. | |
| public static | Массовое создание и вставка нескольких экземпляров. | |
| public static | Подсчёт записей, соответствующих заданному фильтру. | |
| public static | Создаёт новый экземпляр модели и вызывает save на нём. | |
| public static | Уменьшение значения одного или нескольких столбцов. | с 4.36.0 |
| public static | Запуск запроса describe для таблицы. | |
| public static | Удаление нескольких экземпляров или установка для них timestamp deletedAt, если | |
| public static | Удаление таблицы, представленной этой моделью. | |
| public static | Поиск нескольких экземпляров. | |
| public static | findAndCountAll(options: Object): Promise<{count: number, rows: Model[]}> Поиск всех строк, соответствующих запросу, в указанном смещении/пределе, и получение общего количества строк, соответствующих вашему запросу. | |
| public static | Поиск одного экземпляра по его первичному ключу. | |
| public static | findCreateFind(options: Object): Promise<Model, boolean> Более производительный findOrCreate, который не будет работать в рамках транзакции (по крайней мере, не в postgres). Выполнит вызов find, если пусто, попытается создать, если уникальное ограничение, то попытается найти снова | |
| public static | Поиск одного экземпляра. | |
| public static | findOrBuild(options: Object): Promise<Model, boolean> Найти строку, соответствующую запросу, или создать (но не сохранять) строку, если не найдено. Успешный результат обещания будет (экземпляр, созданный). | |
| public static | findOrCreate(options: Object): Promise<Model, boolean> Найти строку, соответствующую запросу, или создать и сохранить строку, если не найдено. Успешный результат обещания будет (экземпляр, созданный). | |
| public static | getTableName(): string | Object Получить имя таблицы модели, учитывая схему. | |
| public static | Создаёт ассоциацию 1:м между этой (источником) и предоставленным целевым элементом. | |
| public static | Создаёт ассоциацию между этой (источником) и предоставленным целевым элементом. | |
| public static | Увеличить значение одного или нескольких столбцов. | |
| public static | Инициализировать модель, представляющую таблицу в базе данных, с атрибутами и параметрами. | |
| public static | Найти максимальное значение поля |
| public static | Найти минимальное значение поля | |
| public static | removeAttribute(attribute: string) Удалить атрибут из определения модели | |
| public static | Восстановить несколько экземпляров, если | |
| public static | Применить схему к этой модели. | |
| public static | Применить область, созданную в | |
| public static | Найти сумму поля | |
| public static | Синхронизировать эту модель с БД, то есть создать таблицу. | |
| public static | Обнулить все экземпляры модели. | |
| public static | Получить не-объявленную модель | |
| public static | Обновить несколько экземпляров, соответствующих параметрам where. | |
| public static | Вставить или обновить одну строку. |
Краткое описание конструкторов
| Общедоступный конструктор | ||
|---|---|---|
| public | constructor(values: Object, options: Object) Создает новый экземпляр модели. | |
Краткое описание членов
| Общедоступные члены | ||
|---|---|---|
| public | isNewRecord: boolean: * Возвращает true, если этот экземпляр еще не был сохранен в базе данных | |
| public get | Ссылка на экземпляр sequelize | |
Краткое описание методов
| Общедоступные методы | ||
|---|---|---|
| public | Если метод changed вызывается со строкой, он вернёт булево значение, указывающее, отличается ли значение данного ключа в | |
| public | Уменьшить значение одного или нескольких столбцов. | |
| public | Удалить строку, соответствующую данному экземпляру. | |
| public | Проверить, ссылаются ли этот и | |
| public | equalsOneOf(others: Array<Model>): boolean Проверить, равен ли этот экземпляр одному из | |
| public | Если ключ не указан, возвращает все значения экземпляра, также вызывая виртуальные геттеры. | |
| public | getDataValue(key: string): any Получить значение базового значения данных. | |
| public | Увеличить значение одного или нескольких столбцов. | с версии 4.0.0 |
| public | Вспомогательный метод для определения, является ли экземпляр «мягко удаленным». | |
| public | Возвращает предыдущее значение для ключа из | |
| public | Обновить текущий экземпляр на месте, т.е. | |
| public | Восстановить строку, соответствующую данному экземпляру. | |
| public | Проверить этот экземпляр, и если проверка пройдёт, сохранить его в базе данных. | |
| public | Метод set используется для обновления значений в экземпляре (представление экземпляра в sequelize, помните, что ничего не будет сохранено до тех пор, пока вы не вызовете | |
| public | setDataValue(key: string, value: any) Обновить базовое значение данных. | |
| public | Преобразовать экземпляр в представление JSON. | |
| public | Это то же самое, что вызов | |
| public | Проверка атрибутов этого экземпляра в соответствии с правилами валидации, заданными в определении модели. | |
| public | Получить объект, представляющий запрос для этого экземпляра, использовать с |
Статические открытые методы
public static addScope(name: string, scope: Object | Function, options: Object) source
Добавить новый scope к модели. Это особенно полезно для добавления scopes с includes, когда модель, которую вы хотите включить, недоступна в момент определения этой модели.
По умолчанию это вызовет ошибку, если scope с таким именем уже существует. Передайте override: true в объект options, чтобы подавить эту ошибку.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| name | string |
Имя scope. Используйте | |
| scope | Object | Function |
scope или options | |
| options | Object |
|
options scope |
| options.override | boolean |
|
переопределить старый scope, если он уже определен |
public static aggregate(attribute: string, aggregateFunction: string, options: Object): Promise<DataTypes|Object> source
Выполнить метод агрегации для указанного поля
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attribute | string |
Атрибут, по которому выполняется агрегация. Может быть именем поля или * | |
| aggregateFunction | string |
Функция, используемая для агрегации, например, sum, max и т.д. | |
| options | Object |
|
Параметры запроса. См. sequelize.query для полного списка параметров |
| options.where | Object |
|
Хэш атрибутов поиска. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для логирования SQL. |
| options.benchmark | boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента в функцию логирования (options.logging). |
| options.dataType | DataTypes | string |
|
Тип результата. Если |
| options.distinct | boolean |
|
Применяет DISTINCT к полю, по которому выполняется агрегация |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.plain | boolean |
|
Когда |
public static belongsTo(target: Model, options: Object): BelongsTo source
Создаёт ассоциацию между этим (источником) и предоставленным целевым объектом. Внешний ключ добавляется к источнику.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model |
Целевой объект модели | |
| options | Объект |
|
Параметры ассоциации belongsTo |
| options.hooks | boolean |
|
Установите в true, чтобы выполнять перед-/послеудаления хуки при удалении связанной модели из-за каскадного удаления. Например, если |
| options.as | строка |
|
Псевдоним этой модели в единственном числе. См. также параметр |
| options.foreignKey | строка | Объект |
|
Имя атрибута внешнего ключа в источниковой таблице или объект, представляющий определение типа для внешнего столбца (см. |
| options.targetKey | строка |
|
Имя атрибута для использования в качестве ключа для ассоциации в целевой таблице. По умолчанию используется первичный ключ целевой таблицы. |
| options.onDelete | строка |
|
SET NULL, если внешний ключ допускает значения NULL, NO ACTION в противном случае |
| options.onUpdate | строка |
|
Устанавливает 'ON UPDATE' |
| options.constraints | boolean |
|
Включить или отключить ограничения на обновление и удаление по внешнему ключу. |
Возвращаемое значение:
| BelongsTo |
Пример:
Profile.belongsTo(User) // This will add userId to the profile table public static belongsToMany(target: Model, options: Object): BelongsToMany source
Создать ассоциацию N:M с таблицей соединения. Определение through обязательно.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model |
Модель-цель | |
| options | Object |
Параметры ассоциации belongsToMany | |
| options.hooks | boolean |
|
Установите в значение true, чтобы запускать перед-/послеудаления хуки при удалении связанной модели из-за каскадного удаления. Например, если |
| options.through | Model | string | Object |
Имя таблицы, используемой для объединения исходной и целевой моделей в ассоциациях n:m. Также может быть моделью sequelize, если вы хотите определить таблицу соединения самостоятельно и добавить дополнительные атрибуты. | |
| options.through.model | Model |
|
Модель, используемая для объединения обеих сторон ассоциации N:M. |
| options.through.scope | Object |
|
Набор ключ/значение, который будет использоваться для создания и поиска ассоциаций по умолчанию в модели соединения. (Не забудьте добавить атрибуты в модель соединения) |
| options.through.unique | boolean |
|
Если true, уникальный ключ будет сгенерирован из внешних ключей (возможно, следует отключить и создать собственные уникальные ключи при использовании областей видимости) |
| options.as | string | Object |
|
Псевдоним этой ассоциации. Если вы предоставляете строку, она должна быть множественной, и будет приведена к единственному числу с помощью node.inflection. Если вы хотите самостоятельно контролировать единственное число, укажите объект с ключами |
| options.foreignKey | string | Object |
|
Имя внешнего ключа в таблице соединения (представляющей исходную модель) или объект, представляющий определение типа для внешнего столбца (см. |
| options.otherKey | string | Object |
|
Имя внешнего ключа в таблице соединения (представляющей целевую модель) или объект, представляющий определение типа для другого столбца (см. |
| options.scope | Object |
|
Набор ключ/значение, который будет использоваться для создания и поиска ассоциаций по умолчанию для целевой модели. (sqlite не поддерживается для N:M) |
| options.timestamps | boolean |
|
Должна ли модель соединения иметь метки времени |
| options.onDelete | string |
|
Каскадное удаление, если это n:m, и установка NULL, если это 1:m |
| options.onUpdate | string |
|
Устанавливает |
| 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(values: Object | Array, options: Object): Model | Array<Model> source
Создаёт новую модель.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object | Array |
Объект пар «ключ-значение» или массив таких пар. Если массив, функция вернёт массив экземпляров. | |
| options | Object |
|
Параметры создания экземпляра |
| options.raw | boolean |
|
Если true, значения игнорируют поля и виртуальные сеттеры. |
| options.isNewRecord | boolean |
|
Является ли запись новой |
| options.include | Array |
|
массив опций включения - используется для построения предварительно полученных/включенных экземпляров модели. Смотрите |
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 |
|
Игнорировать дублирующие значения для первичных ключей? (не поддерживается MSSQL или Postgres < 9.5) |
| options.updateOnDuplicate | Array |
|
Поля для обновления, если строка ключа уже существует (при обновлении дублирующего ключа)? (поддерживается только MySQL, MariaDB, SQLite >= 3.24.0 и Postgres >= 9.5). По умолчанию все поля обновляются. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| options.benchmark | boolean |
|
Передать время выполнения запроса в миллисекундах во втором аргументе функции регистрации (options.logging). |
| options.returning | boolean | Array |
|
Если true, добавьте RETURNING * для получения всех значений; если массив имен столбцов, добавьте RETURNING <столбцы> для получения определенных столбцов (только Postgres) |
| options.searchPath | string |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
public static count(options: Object): Promise<number> source
Подсчитать количество записей, соответствующих заданному условию where.
Если вы предоставите опцию include, будет подсчитано количество соответствующих ассоциаций.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект |
|
Параметры |
| options.where | Объект |
|
Хэш атрибутов поиска. |
| options.include | Объект |
|
Параметры включения. Подробнее см. |
| options.paranoid | boolean |
|
Установить |
| options.distinct | boolean |
|
Применить COUNT(DISTINCT(col)) к первичному ключу или к options.col. |
| options.col | строка |
|
Столбец, к которому нужно применить COUNT() |
| options.attributes | Массив |
|
Используется совместно с |
| options.group | Массив |
|
Для создания сложных подсчётов. Возвращает несколько строк по мере необходимости. |
| options.transaction | Транзакция |
|
Транзакция для выполнения запроса. |
| options.logging | Функция |
|
Функция, выполняемая при выполнении запроса для записи SQL. |
| options.benchmark | boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент функции logging (options.logging). |
| options.searchPath | строка |
|
Необязательный параметр для указания схемы search_path (только Postgres). |
public static create(values: Object, options: Object): Promise<Model> source
Создаёт новую запись модели и вызывает метод save для неё.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object |
Словарь данных для создания новой записи. | |
| options | Object |
|
Опции для создания и запроса. |
| options.raw | boolean |
|
Если установлено в true, значения будут игнорировать поля и виртуальные сеттеры. |
| options.isNewRecord | boolean |
|
Новая запись? |
| options.include | Массив |
|
Массив опций включения - используется для построения предварительно полученных/включенных экземпляров модели. См. |
| options.fields | Массив |
|
Если установлено, будут сохранены только столбцы, соответствующие полям в этом массиве. |
| options.fields | строка[] |
|
Необязательный массив строк, представляющих столбцы базы данных. Если fields задан, будут валидированы и сохранены только эти столбцы. |
| options.silent | boolean |
|
Если true, отметка времени updatedAt не будет обновлена. |
| options.validate | boolean |
|
Если false, валидация не будет выполнена. |
| options.hooks | boolean |
|
Выполнение хуков до и после создания/обновления + валидации. |
| options.logging | Функция |
|
Функция, которая выполняется во время выполнения запроса для логирования SQL. |
| options.benchmark | boolean |
|
Передача времени выполнения запроса в миллисекундах как второго аргумента функции logging (options.logging). |
| options.transaction | Транзакция |
|
Транзакция для выполнения запроса. |
| options.searchPath | строка |
|
Необязательный параметр для указания пути поиска схемы (только Postgres). |
| options.returning | boolean |
|
Возвратить затронутые строки (только для postgres). |
См. также:
public static decrement(fields: string | Array | Object, options: Object): Promise<Model[], ?number> с 4.36.0 источник
Уменьшает значение одного или нескольких столбцов. Это выполняется в базе данных, что означает, что оно не использует значения, хранящиеся в данный момент в экземпляре. Уменьшение выполняется с помощью запроса sql SET column = column - X WHERE foo = 'bar'. Чтобы получить правильное значение после уменьшения в экземпляре, необходимо выполнить перезагрузку.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | string | Array | Object |
Если предоставлена строка, этот столбец увеличивается на значение | |
| options | Object |
Опции уменьшения, аналогичные опциям увеличения |
Возвращаемое значение:
| Promise<Model[], ?number> |
Возвращает массив затронутых строк и количество затронутых строк с |
Пример:
Model.decrement('number', { where: { foo: 'bar' }); Model.decrement(['number', 'count'], { by: 2, where: { foo: 'bar' } }); // `by` is ignored, since each column has its own value
Model.decrement({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } }); См. также:
public static destroy(options: Object): Promise<number> 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 |
|
Передать время выполнения запроса в миллисекундах как второй аргумент в функцию логирования (options.logging). |
public static drop(options: Object): Promise source
Удалить таблицу, представленную этим объектом модели.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры для удаления. |
| options.cascade | boolean |
|
Также удалить все объекты, зависящие от этой таблицы, такие как представления. Действует только в postgres. |
| options.logging | Function |
|
Функция, которая выполняется при выполнении запроса для ведения журнала SQL. |
| options.benchmark | boolean |
|
Передать время выполнения запроса в миллисекундах как второй аргумент в функцию логирования (options.logging). |
Возвращаемое значение:
| Promise |
| 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 | логическое значение |
|
Определяет, следует ли связывать условия ON и WHERE через OR вместо AND. |
| options.include[].on | Объект |
|
Укажите собственное условие ON для объединения. |
| options.include[].attributes | Массив<строка> |
|
Список атрибутов для выбора из дочерней модели. |
| options.include[].required | логическое значение |
|
Если true, преобразуется во внутреннее объединение, что означает, что родительская модель будет загружена только в том случае, если у неё есть соответствующие дочерние элементы. True, если установлено |
| options.include[].right | логическое значение |
|
Если 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.include[].duplicating | boolean |
|
Отметить 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.skipLocked | boolean |
|
Пропустить заблокированные строки. Поддерживается только в Postgres. |
| options.raw | boolean |
|
Возвратить сырые результаты. См. sequelize.query для получения дополнительной информации. |
| options.logging | Функция |
|
Функция, которая выполняется при запуске запроса для ведения журнала sql. |
| options.benchmark | boolean |
|
Передать время выполнения запроса в миллисекундах в качестве второго аргумента функции ведения журнала (options.logging). |
| options.having | Объект |
|
Параметры having |
| options.searchPath | строка |
|
Необязательный параметр для указания схемы search_path (только Postgres) |
| options.rejectOnEmpty | boolean | Ошибка |
|
Выбрасывает ошибку, когда не найдено записей |
Пример:
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 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)); См. также:
- Операторы для возможных операторов __Псевдоним__: _все_ Обещание выполняется массивом экземпляров Model, если запрос выполнен успешно._
- Sequelize#query
public static findAndCountAll(options: Объект): Promise<{count: число, rows: Модель[]}> source
Найти все строки, соответствующие вашему запросу, в рамках заданного смещения/лимита и получить общее количество строк, соответствующих вашему запросу. Это очень полезно для постраничной навигации
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект |
|
См. параметры findAll |
Пример:
Model.findAndCountAll({
where: ...,
limit: 12,
offset: 12
}).then(result => {
...
})
# In the above example, `result.rows` will contain rows 13 through 24, while `result.count` will return the total number of rows that matched your query.
# When you add includes, only those which are required (either because they have a where clause, or because `required` is explicitly set to true on the include) will be added to the count part.
# Suppose you want to find all users who have a profile attached:
User.findAndCountAll({
include: [
{ model: Profile, required: true}
],
limit 3
});
# Because the include for `Profile` has `required` set it will result in an inner join, and only the users who have a profile will be counted. If we remove `required` from the include, both users with and without profiles will be counted См. также:
- Model.findAll для спецификации параметров find и запросов
- Model.count для спецификации параметров подсчёта
public static findByPk(param: number | string | Buffer, options: Object): Promise<Model> source
Поиск единственного экземпляра по первичному ключу.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| param | number | string | Buffer |
Значение первичного ключа искомого экземпляра. | |
| options | Object |
|
Опции поиска |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.searchPath | string |
|
Необязательный параметр для указания схемы search_path (только для Postgres) |
См. также:
- Model.findAll для полного объяснения опций, обратите внимание, что options.where не поддерживается.
public static findCreateFind(options: Object): Promise<Model, boolean> source
Более производительный findOrCreate, который не будет работать в транзакции (по крайней мере, не в Postgres). Выполнит find, если пусто, то попытается создать, если уникальное ограничение, то попытается найти снова.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
Опции поиска | |
| options.where | Object |
Хэш атрибутов поиска. Если | |
| options.defaults | Object |
|
Значения по умолчанию, используемые при создании нового экземпляра |
См. также:
- Model.findAll для полного описания поиска и опций
public static findOne(options: Object): Promise<Model> source
Поиск единственного экземпляра. Применяется LIMIT 1, поэтому слушатель всегда будет вызван с единственным экземпляром.
Псевдоним: find
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Хэш опций для описания области поиска |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.searchPath | string |
|
Необязательный параметр для указания схемы search_path (только для Postgres) |
См. также:
- Model.findAll для объяснения опций
public static findOrBuild(options: Object): Promise<Model, boolean> source
Найти строку, соответствующую запросу, или создать (но не сохранять) строку, если она не найдена. Успешный результат промиса будет (экземпляр, создан)
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
опции поиска | |
| options.where | Object |
Хеш атрибутов поиска. Если | |
| options.defaults | Object |
|
Значения по умолчанию для использования при создании нового экземпляра. |
| options.transaction | Object |
|
Транзакция для выполнения запроса. |
public static findOrCreate(options: Object): Promise<Model, boolean> source
Найти строку, соответствующую запросу, или создать и сохранить строку, если она не найдена. Успешный результат промиса будет (экземпляр, создан)
Если в объекте options не передана транзакция, внутри будет создана новая транзакция, чтобы предотвратить состояние гонки, при котором соответствующая строка создается другим подключением после поиска, но до вызова вставки. Однако в SQLite в таких случаях не всегда можно справиться с этим, особенно если одна транзакция вставляет, а другая пытается выбрать до того, как первая была подтверждена. В этом случае вместо этого будет выброшено исключение sequelize. TimeoutError. Если транзакция создается, вместо нее будет создан контрольный пункт, и любое нарушение уникального ограничения будет обработано внутри.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
опции поиска и создания | |
| options.where | Object |
where Хеш атрибутов поиска. Если | |
| options.defaults | Object |
|
Значения по умолчанию для использования при создании нового экземпляра. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса. |
См. также:
- Model.findAll для полного описания поиска и опций
public static hasMany(target: Model, options: Object): HasMany source
Создаёт ассоциацию 1:м между этим (источником) и предоставленным целевым объектом. Внешний ключ добавляется к целевому объекту.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| target | Model |
Целевой объект модели | |
| options | Object |
|
Опции ассоциации hasMany |
| options.hooks | boolean |
|
Установите в значение true, чтобы запускать перед/после-удаления хуки при удалении связанной модели из-за каскадного удаления. Например, если |
| options.as | string | Object |
|
Псевдоним этой модели. Если вы передаёте строку, она должна быть во множественном числе, и будет сведена к единственному числу с помощью node.inflection. Если вы хотите самостоятельно управлять единственным числом, передайте объект с ключами |
| options.foreignKey | string | Object |
|
Имя внешнего ключа в целевой таблице или объект, представляющий определение типа для внешнего столбца (см. |
| options.sourceKey | string |
|
Имя поля для использования в качестве ключа ассоциации в таблице источника. По умолчанию устанавливается первичный ключ таблицы источника |
| options.scope | Object |
|
Набор ключ/значение, который будет использоваться для создания и поиска ассоциаций по умолчанию в целевой таблице. (sqlite не поддерживается для N:М) |
| options.onDelete | string |
|
SET NULL, если внешний ключ допускает значения NULL, CASCADE в противном случае |
| options.onUpdate | string |
|
Установить |
| options.constraints | boolean |
|
Включить или отключить ограничения на обновление и удаление по внешнему ключу. |
Возвращаемое значение:
| 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 |
|
Параметры ассоциации hasOne |
| options.hooks | boolean |
|
Установите в значение true, чтобы запустить хуки before-/afterDestroy при удалении связанной модели из-за каскадного удаления. Например, если |
| options.as | string |
|
Псевдоним этой модели в единственном числе. См. также параметр |
| options.foreignKey | string | Object |
|
Имя атрибута внешнего ключа в целевой модели или объект, представляющий определение типа для внешнего столбца (см. |
| options.sourceKey | string |
|
Имя атрибута, используемого в качестве ключа для ассоциации в таблице источника. По умолчанию используется первичный ключ таблицы источника |
| options.onDelete | string |
|
SET NULL, если внешний ключ допускает значения NULL, CASCADE в противном случае |
| options.onUpdate | string |
|
Устанавливает 'ON UPDATE' |
| 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<Model[], ?number> source
Увеличить значение одного или нескольких столбцов. Это делается в базе данных, что означает, что он не использует значения, хранящиеся в настоящее время в экземпляре. Увеличение выполняется с помощью запроса SET column = column + X WHERE foo = 'bar'. Чтобы получить правильное значение после увеличения в экземпляре, необходимо выполнить перезагрузку.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | string | Array | Object |
Если предоставлена строка, этот столбец увеличивается на значение | |
| options | Object |
Параметры увеличения | |
| options.where | Object |
Словарь условий | |
| options.by | number |
|
Число, на которое нужно увеличить |
| options.silent | boolean |
|
Если true, метка времени updatedAt не будет обновляться. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.searchPath | string |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
Возвращаемое значение:
| Promise<Model[], ?number> |
Возвращает массив измененных строк и количества измененных строк с |
Пример:
Model.increment('number', { where: { foo: 'bar' }); Model.increment(['number', 'count'], { by: 2, where: { foo: 'bar' } }); // `by` is ignored, as each column has its own value
Model.increment({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } }); См. также:
public static init(attributes: Object, options: Object): Model source
Инициализировать модель, представляющую таблицу в БД, с атрибутами и параметрами.
Столбцы таблицы определяются хэшем, который передаётся в качестве первого аргумента. Каждый атрибут хэша представляет собой столбец.
Подробнее о Валидациях
Дополнительные примеры, Определение модели
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attributes | Объект |
Объект, где каждый атрибут — это столбец таблицы. Каждый столбец может быть типом данных, строкой или объектом описания типа с указанными ниже свойствами: | |
| attributes.column | строка | DataTypes | Объект |
Описание столбца базы данных | |
| attributes.column.type | строка | DataTypes |
Строка или тип данных | |
| attributes.column.allowNull | логическое значение |
|
Если false, столбец будет иметь ограничение NOT NULL, и перед сохранением экземпляра будет выполнена проверка на непустоту. |
| attributes.column.defaultValue | любое |
|
Буквальное значение по умолчанию, функция JavaScript или функция SQL (см. |
| attributes.column.unique | строка | логическое значение |
|
Если true, столбец получит ограничение уникальности. Если указана строка, столбец будет частью составного индекса уникальности. Если несколько столбцов имеют одну и ту же строку, они будут частью одного и того же индекса уникальности |
| attributes.column.primaryKey | логическое значение |
|
Если true, этот атрибут будет помечен как первичный ключ |
| attributes.column.field | строка |
|
Если установлено, sequelize сопоставит имя атрибута с другим именем в базе данных |
| attributes.column.autoIncrement | логическое значение |
|
Если true, этот столбец будет установлен как автоинкрементный |
| attributes.column.autoIncrementIdentity | логическое значение |
|
Если true, в сочетании с autoIncrement=true, будет использоваться Postgres |
| 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.column.validate | Объект |
|
Объект проверок для выполнения для этого столбца каждый раз, когда модель сохраняется. Может быть именем проверки, предоставленной validator.js, функцией проверки, предоставленной с помощью расширения validator.js (см. атрибут |
| options | Объект |
Эти параметры объединяются с параметрами по умолчанию define, предоставленными конструктору Sequelize. | |
| options.sequelize | Объект |
Определите экземпляр sequelize, которому следует присоединить новую модель. Вызовите ошибку, если не указан. | |
| options.modelName | строка |
|
Установите имя модели. По умолчанию оно совпадает с именем класса. |
| options.defaultScope | Объект |
|
Определите область поиска по умолчанию для этой модели. Области имеют тот же формат, что и параметры, передаваемые в find / findAll |
| options.scopes | Объект |
|
Дополнительные области, определенные так же, как defaultScope выше. Смотрите |
| options.omitNull | boolean |
|
Не сохранять значения null. Это означает, что все столбцы со значениями null не будут сохранены |
| options.timestamps | boolean |
|
Добавляет метки времени createdAt и updatedAt к модели. |
| options.paranoid | boolean |
|
Вызов |
| options.underscored | boolean |
|
Добавить подчеркнутое поле ко всем атрибутам, это охватывает атрибуты, определенные пользователем, метки времени и внешние ключи. Не повлияет на атрибуты с явно заданным параметром |
| options.freezeTableName | boolean |
|
Если freezeTableName имеет значение true, sequelize не будет пытаться изменить имя модели, чтобы получить имя таблицы. В противном случае имя модели будет сделано множественным |
| options.name | Объект |
|
Объект с двумя атрибутами, |
| options.name.singular | строка |
|
Единственное имя для модели |
| options.name.plural | строка |
|
Множественное имя для модели |
| options.indexes | Массив<Объект> |
|
определения индексов |
| options.indexes[].name | строка |
|
Имя индекса. По умолчанию соответствует имени модели + _ + объединённые поля |
| options.indexes[].type | строка |
|
Тип индекса. Используется только mysql. Один из |
| options.indexes[].using | строка |
|
Метод создания индекса ( |
| options.indexes[].operator | строка |
|
Укажите оператор индекса. |
| options.indexes[].unique | boolean |
|
Индекс должен быть уникальным? Также может быть активирован путем установки типа в |
| options.indexes[].concurrently | boolean |
|
PostgresSQL создаст индекс без блокировок записи. Только для Postgres |
| options.indexes[].fields | Массив<строка|Объект> |
|
Массив полей для индексации. Каждое поле может быть строкой, содержащей имя поля, объектом sequelize (например, |
| options.createdAt | строка | boolean |
|
Переопределите имя атрибута createdAt, если предоставлена строка, или отключите его, если значение false. Timestamps должно быть true. Поле с подчеркиванием будет установлено с параметром underscored. |
| options.updatedAt | строка | boolean |
|
Переопределите имя атрибута updatedAt, если предоставлена строка, или отключите его, если значение false. Timestamps должно быть true. Поле с подчеркиванием будет установлено с параметром underscored. |
| options.deletedAt | строка | boolean |
|
Переопределите имя атрибута deletedAt, если предоставлена строка, или отключите его, если значение false. Timestamps должно быть 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, beforeSave, afterDestroy, afterUpdate, afterBulkCreate, afterSave, afterBulkDestroy и afterBulkUpdate. Дополнительную информацию об обработчиках и их сигнатурах см. в разделе Hooks. Каждая свойство может быть либо функцией, либо массивом функций. |
| options.validate | Объект |
|
Объект валидаций на уровне модели. Валидации имеют доступ ко всем значениям модели через |
Возвращаемое значение:
| Модель |
Пример:
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 См. также:
- Типы данных
- Обработчики
публичный статический max(field: строка, options: Объект): Promise<*> исходный код
Найти максимальное значение поля
Возвращаемое значение:
| Promise<*> |
См. также:
- Model.aggregate для параметров
публичный статический min(field: строка, options: Объект): Promise<*> исходный код
Найти минимальное значение поля
Возвращаемое значение:
| Promise<*> |
См. также:
- Model.aggregate для параметров
публичный статический removeAttribute(attribute: строка) исходный код
Удалить атрибут из определения модели
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| attribute | строка |
имя атрибута для удаления |
public static restore(options: Object): Promise 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 |
public static schema(schema: string, options: Object): Model 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). |
Возвращаемое значение:
| Model |
См. также:
- Sequelize#define для получения дополнительной информации о настройке схемы по умолчанию.
public static scope(option: Array | Object | string): Model source
Применить созданный в define scope к модели.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| option | Array | Object | string |
|
Применяемый scope. Scopes могут передаваться как последовательные аргументы, или в виде массива аргументов. Для применения простых scope и функций scope без аргументов, передайте их как строки. Для scope функций, передайте объект, с свойством |
Возвращаемое значение:
| Model |
Ссылка на модель, с примененным scope. Вызов scope повторно для возвращаемой модели очистит предыдущий scope. |
Пример:
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
},
access_level {
[Op.gte]: accessLevel
}
}
}
}
}
})
# As you have defined a default scope, every time you do Model.find, the default scope is appended to your query. Here's a couple of examples:
Model.findAll() // WHERE username = 'dan'
Model.findAll({ where: { age: { [Op.gt]: 12 } } }) // WHERE age > 12 AND username = 'dan' Model.scope({ method: ['complexFunction', 'dan@sequelize.com', 42]}).findAll()
// WHERE email like 'dan@sequelize.com%' AND access_level >= 42 public static truncate(options: Object): Promise source
Обнулить все экземпляры модели. Это удобный метод для Model.destroy({ truncate: true }).
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры, передаваемые в Model.destroy дополнительно к truncate |
| options.cascade | boolean | Function |
|
Обнуляет все таблицы, имеющие внешние ключи, ссылающиеся на указанную таблицу или любые таблицы, добавленные в группу из-за CASCADE. |
| options.restartIdentity | boolean |
|
Автоматически перезапускает последовательности, принадлежащие столбцам усеченной таблицы. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.logging | boolean | Function |
|
Функция, которая регистрирует SQL-запросы, или false для отсутствия регистрации |
| options.benchmark | boolean |
|
Передает время выполнения запроса в миллисекундах как второй аргумент функции регистрации (options.logging). |
| options.searchPath | string |
|
Необязательный параметр для указания схемы search_path (только Postgres) |
Возвращаемое значение:
| Promise |
См. также:
- Model.destroy для получения дополнительной информации
public static update(values: Object, options: Object): Promise<Array<number, number>> source
Обновить несколько записей, соответствующих параметрам where.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| 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 не будет обновлена. |
public static upsert(values: Object, options: Object): Promise<boolean> 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 возвращает undefined для созданных, независимо от того, была ли строка создана или обновлена. Это связано с тем, что SQLite всегда выполняет INSERT OR IGNORE + UPDATE в одном запросе, поэтому нет способа узнать, была ли строка вставлена или нет.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object |
Хэш значений для вставки/обновления | |
| options | Object |
|
Опции upsert |
| options.validate | boolean |
|
Выполнить валидацию перед вставкой строки |
| options.fields | Array |
|
Поля для вставки/обновления. По умолчанию все измененные поля |
| options.hooks | boolean |
|
Выполнить хуки до/после upsert? |
| 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<boolean> |
Возвращает логическое значение, указывающее, была ли строка создана или обновлена. Для MySQL/MariaDB возвращает |
Публичные конструкторы
public constructor(values: Object, options: Object) source
Создает новую модель экземпляра.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| values | Object |
|
объект пар ключ-значение |
| options | Object |
|
опции создания экземпляра |
| options.raw | boolean |
|
Если установлено в true, значения будут игнорировать обработчики полей и виртуальных свойств. |
| options.isNewRecord | boolean |
|
Это новая запись? |
| options.include | Array |
|
массив опций include - используется для построения предварительно извлеченных/включенных экземпляров моделей. См. |
Открытые члены
Общедоступные методы
public changed(key: string, value: any): boolean | Array source
Если changed вызывается со строковым значением, то он вернёт булево значение, указывающее, отличается ли значение данного ключа в dataValues от значения в _previousDataValues.
Если changed вызывается без аргумента, то он вернёт массив ключей, которые изменились.
Если changed вызывается без аргумента и ключи не изменились, то он вернёт false.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | string |
|
ключ для проверки или изменения статуса |
| value | any |
|
значение для установки |
public decrement(fields: string | Array | Object, options: Object): Promise source
Уменьшает значение одного или нескольких столбцов. Это делается в базе данных, а значит, не использует значения, хранящиеся в текущем экземпляре. Уменьшение выполняется с помощью
SET column = column - X
запроса. Обновлённый экземпляр будет возвращен по умолчанию в Postgres. Однако в других диалектах вам потребуется выполнить перезагрузку, чтобы получить новые значения.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | string | Array | Object |
Если передано строковое значение, то столбец уменьшается на значение | |
| options | Object |
|
опции для уменьшения |
| options.by | number |
|
На сколько уменьшить |
| options.silent | boolean |
|
Если true, метка времени updatedAt не будет обновляться. |
| options.logging | Function |
|
Функция, которая вызывается во время выполнения запроса для записи SQL. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса |
| options.searchPath | string |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
| options.returning | boolean |
|
Добавление RETURNING * для получения сгенерированных значений (только Postgres) |
Возвращаемое значение:
| Promise |
Пример:
instance.decrement('number') // decrement number by 1
instance.decrement(['number', 'count'], { by: 2 }) // decrement number and count by 2
// decrement answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
instance.decrement({ answer: 42, tries: 1}, { by: 2 }) См. также:
public destroy(options: Объект): Promise source
Удалить строку, соответствующую этому экземпляру. В зависимости от настроек параметра paranoid, строка будет либо полностью удалена, либо её метка удаления (deletedAt) будет установлена на текущее время.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Объект |
|
Параметры удаления |
| options.force | boolean |
|
Если установлено в true, модели paranoid будут фактически удалены |
| options.logging | Функция |
|
Функция, которая выполняется при выполнении запроса для регистрации SQL. |
| options.transaction | Транзакция |
|
Транзакция для выполнения запроса. |
| options.searchPath | строка |
|
Необязательный параметр для указания поиска схемы search_path (только для Postgres) |
Возвращает:
| Promise |
public equals(other: Модель): boolean source
Проверка, ссылаются ли этот и other экземпляр на одну и ту же строку.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| other | Модель |
Другой экземпляр для сравнения. |
Возвращает:
| boolean |
public equalsOneOf(others: Массив<Модель>): boolean source
Проверка, равен ли этот экземпляр одному из others путём вызова equals.
Возвращает:
| boolean |
public get(key: строка, options: Объект): Объект | любое source
Если ключ не указан, возвращает все значения экземпляра, вызывая также виртуальные геттеры.
Если ключ указан и для ключа присутствует поле или виртуальный геттер, будет вызван этот геттер - иначе вернётся значение для ключа.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | строка |
|
Ключ для получения значения. |
| options | Объект |
|
Параметры получения. |
| options.plain | boolean |
|
Если установлено в true, включенные экземпляры будут возвращены как обычные объекты. |
| options.raw | boolean |
|
Если установлено в true, поля и виртуальные установщики будут проигнорированы. |
Возвращает:
| Объект | любое |
public increment(fields: string | Array | Object, options: Object): Promise<Model> since 4.0.0 source
Увеличить значение одного или нескольких столбцов. Это выполняется в базе данных, что означает, что он не использует значения, хранящиеся в настоящее время в экземпляре. Увеличение выполняется с помощью
SET column = column + X
запроса. Обновлённый экземпляр по умолчанию будет возвращен в Postgres. Однако в других диалектах вам потребуется выполнить перезагрузку, чтобы получить новые значения.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| fields | string | Array | Object |
Если предоставлена строка, этот столбец увеличивается на значение | |
| options | Object |
|
параметры |
| options.by | number |
|
Число, на которое нужно увеличить |
| options.silent | boolean |
|
Если true, метка времени updatedAt не будет обновлена. |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для регистрации SQL. |
| options.transaction | Transaction |
|
Транзакция для выполнения запроса. |
| options.searchPath | string |
|
Необязательный параметр для указания пути поиска схемы (только Postgres). |
| options.returning | boolean |
|
Добавить RETURNING * для получения сгенерированных автоматически значений (только Postgres). |
Пример:
instance.increment('number') // increment number by 1
instance.increment(['number', 'count'], { by: 2 }) // increment number and count by 2
// increment answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
instance.increment({ answer: 42, tries: 1}, { by: 2 }) См. также:
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<Model> source
Обновить текущий экземпляр на месте, т. е. обновить объект текущими данными из базы данных и вернуть тот же объект. Это отличается от выполнения find(Instance.id), так как это создаст и вернёт новый экземпляр. С помощью этого метода все ссылки на экземпляр обновляются новыми данными, и новые объекты не создаются.
См. также:
public restore(options: Object): Promise source
Восстановить строку, соответствующую этому экземпляру. Доступно только для модели paranoid.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры восстановления |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.transaction | Transaction |
|
Транзакция, в рамках которой выполняется запрос |
Возвращаемое значение:
| Promise |
public save(options: Object): Promise<Model> source
Проверить этот экземпляр и, если проверка пройдена, сохранить его в базе данных. Сохраняются только изменённые поля, и ничего не делается, если поля не изменились.
При успехе обратный вызов будет вызван с этим экземпляром. При ошибке проверки обратный вызов будет вызван с экземпляром Sequelize.ValidationError. Эта ошибка будет иметь свойство для каждого поля, для которого проверка не пройдена, с сообщением об ошибке для этого поля.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры сохранения |
| options.fields | string[] |
|
Необязательный массив строк, представляющих столбцы базы данных. Если fields указан, будут проверены и сохранены только эти столбцы. |
| options.silent | boolean |
|
Если true, метка времени updatedAt не будет обновляться. |
| options.validate | boolean |
|
Если false, проверки не будут выполняться. |
| options.hooks | boolean |
|
Выполнить до и после создания/обновления + валидации хуки |
| options.logging | Function |
|
Функция, которая выполняется во время выполнения запроса для записи SQL. |
| options.transaction | Transaction |
|
Транзакция, в рамках которой выполняется запрос |
| options.searchPath | string |
|
Необязательный параметр для указания пути поиска схемы (только Postgres) |
| options.returning | boolean |
|
Добавить RETURNING * для получения сгенерированных значений (только Postgres) |
public set(key: string | Object, value: any, options: Object): Model source
Метод set используется для обновления значений экземпляра (представление экземпляра в Sequelize, помните, что ничего не будет сохранено, пока вы явно не вызовете save). В самом простом случае set обновит значение, хранящееся в базовом объекте dataValues. Однако, если для ключа определена пользовательская функция-сеттер, будет вызвана именно она. Чтобы обойти сеттер, можно передать raw: true в объекте опций.
Если set вызывается с объектом, он перебирает свойства объекта и рекурсивно вызывает set для каждой пары ключ-значение. Если вы установите raw в true, базовые данные dataValues будут либо напрямую установлены в переданный объект, либо использованы для расширения dataValues, если dataValues уже содержат значения.
При вызове set предыдущее значение поля сохраняется, и устанавливается флаг изменения (см. changed).
Set также может использоваться для построения экземпляров для ассоциаций, если у вас есть значения для них. При использовании set с ассоциациями необходимо убедиться, что ключ свойства соответствует псевдониму ассоциации, а также что установлены правильные параметры include (из .build() или .findOne())
Если вызвано с точечно-разделенным ключом для атрибута JSON/JSONB, значение будет установлено вложенным образом, а весь объект будет помечен как измененный.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | string | Object |
Ключ для установки, может быть строкой или объектом. Если строка, устанавливается значение для этого ключа, для объекта перебираются все свойства объекта и устанавливаются значения. | |
| value | any |
Значение для установки | |
| options | Object |
|
Опции для установки |
| options.raw | boolean |
|
Если установлено в true, поля и виртуальные сеттеры будут проигнорированы |
| options.reset | boolean |
|
Очистить все ранее установленные значения данных |
Возвращает:
| Model |
См. также:
- Model.findAll для получения более подробной информации об include
public setDataValue(key: string, value: any) source
Обновить базовое значение данных
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| key | string |
Ключ для установки в хранилище данных экземпляра | |
| value | any |
новое значение для данного ключа |
public toJSON(): Object source
Преобразовать экземпляр в представление JSON. Выполняет get без ключей. Это означает, что получает все значения, полученные из БД, и применяет все пользовательские геттеры.
Возвращает:
| Object |
См. также:
public validate(options: Object): Promise source
Проверить атрибуты этого экземпляра в соответствии с правилами проверки, заданными в определении модели.
Обещание выполняется только в случае успешной проверки; в противном случае оно отклоняется экземпляром Error, содержащим записи { имя_поля : [сообщения_об_ошибках] }.
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| options | Object |
|
Параметры, передаваемые валидатору |
| options.skip | Массив |
|
Массив строк. Все свойства, которые находятся в этом массиве, не будут проверены |
| options.fields | Массив |
|
Массив строк. Только свойства, которые находятся в этом массиве, будут проверены |
| options.hooks | boolean |
|
Запустить перед и после хуков валидации |
Возвращаемое значение:
| Promise |
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v5/class/lib/model.js~Model.html