Эта документация была автоматически переведена ИИ.
Поле
Обзор
Это абстрактный класс для управления полями коллекции. Он также является базовым классом для всех типов полей. Любой другой тип поля реализуется путём наследования от этого класса.
Информацию о том, как настроить собственные поля, вы найдёте в разделе [Расширение типов полей].
Конструктор
Обычно разработчики не вызывают его напрямую. Он используется как прокси-точка входа через метод db.collection({ fields: [] }).
При расширении полей вы реализуете их, наследуя от абстрактного класса Field, а затем регистрируя в экземпляре Database.
Сигнатура
constructor(options: FieldOptions, context: FieldContext)
Параметры
Члены экземпляра
name
Имя поля.
type
Тип поля.
dataType
Тип хранения поля в базе данных.
options
Параметры конфигурации инициализации поля.
context
Объект контекста поля.
Методы конфигурации
on()
Это сокращённый способ определения обработчиков для событий коллекции. Эквивалентно вызову db.on(this.collection.name + '.' + eventName, listener).
При наследовании обычно нет необходимости переопределять этот метод.
Сигнатура
on(eventName: string, listener: (...args: any[]) => void)
Параметры
off()
Это сокращённый способ удаления обработчиков для событий коллекции. Эквивалентно вызову db.off(this.collection.name + '.' + eventName, listener).
При наследовании обычно нет необходимости переопределять этот метод.
Сигнатура
off(eventName: string, listener: (...args: any[]) => void)
Параметры
bind()
Содержимое, которое выполняется при добавлении поля в коллекцию. Обычно используется для добавления слушателей событий коллекции и другой обработки.
При наследовании необходимо сначала вызвать соответствующий метод super.bind().
Сигнатура
bind()
unbind()
Содержимое, которое выполняется при удалении поля из коллекции. Обычно используется для удаления слушателей событий коллекции и другой обработки.
При наследовании необходимо сначала вызвать соответствующий метод super.unbind().
Сигнатура
unbind()
get()
Получает значение параметра конфигураци и поля.
Сигнатура
get(key: string): any
Параметры
Пример
merge()
Объединяет значения параметров конфигурации поля.
Сигнатура
merge(options: { [key: string]: any }): void
Параметры
Пример
remove()
Удаляет поле из коллекции (только из памяти).
Пример
Методы базы данных
removeFromDb()
Удаляет поле из базы данных.
Сигнатура
removeFromDb(options?: Transactionable): Promise<void>
Параметры
existsInDb()
Определяет, существует ли поле в базе данных.
Сигнатура
existsInDb(options?: Transactionable): Promise<boolean>
Параметры
Список встроенных типов полей
NocoBase включает в себя несколько часто используемых типов полей. Вы можете напрямую указывать тип поля при определении полей коллекции, используя соответствующее имя type. Различные типы полей имеют разные параметры конфигурации; подробности смотрите в списке ниже.
Все параметры конфигурации для типов полей, за исключением тех, что описаны ниже, будут переданы в Sequelize. Таким образом, здесь можно использовать все параметры конфигурации полей, поддерживаемые Sequelize (например, allowNull, defaultValue и т.д.).
Кроме того, серверные типы полей в основном решают задачи хранения данных в базе данных и некоторые алгоритмические проблемы, и, как правило, не связаны с типами отображения полей и используемыми компонентами на стороне фронтенда. Информацию о типах полей для фронтенда можно найти в соответствующем разделе руководства.
'boolean'
Логический тип данных.
Пример
'integer'
Целочисленный тип (32-битный).
Пример
'bigInt'
Длинный целочисленный тип (64-битный).
Пример
'double'
Тип с плавающей запятой двойной точности (64-битный).
Пример
'real'
Тип вещественного числа (только для PostgreSQL).
'decimal'
Десятичный тип числа.
'string'
Строковый тип. Эквивалентен типу VARCHAR в большинстве баз данных.
Пример
'text'
Текстовый тип. Эквивалентен типу TEXT в большинстве баз данных.
Пример
'password'
Тип пароля (расширение NocoBase). Шифрует пароли с использованием метода scrypt из нативного пакета crypto Node.js.
Пример
Параметры
'date'
Тип даты.
'time'
Тип времени.
'array'
Тип массива (только для PostgreSQL).
'json'
Тип JSON.
'jsonb'
Тип JSONB (только для PostgreSQL, в других случаях будет совместим с типом 'json').
'uuid'
Тип UUID.
'uid'
Тип UID (расширение NocoBase). Тип короткого случайного строкового идентификатора.
'formula'
Тип формулы (расширение NocoBase). Позволяет настраивать вычисления математических формул на основе mathjs. В формуле можно ссылаться на значения других столбцов той же записи для участия в расчётах.
Пример
'radio'
Тип "радиокнопка" (расширение NocoBase). Вся коллекция может содержать не более одной записи, у которой значение этого поля равно true; у всех остальных записей оно будет false или null.
Пример
Вся система содержит только одного пользователя, помеченного как root. Если значение root для любого другого пользователя будет изменено на true, все остальные записи, у которых root было true, будут изменены на false:
'sort'
Тип сортировки (расширение NocoBase). Сортирует на основе целочисленных значений, автоматически генерирует новый порядковый номер для новых записей и переупорядочивает номера при перемещении данных.
Если для коллекции определён параметр sortable, соответствующее поле также будет сгенерировано автоматически.
Пример
Статьи могут быть отсортированы по пользователю, которому они принадлежат:
'virtual'
Виртуальный тип. Фактически не хранит данные, используется только для определения специальных геттеров/сеттеров.
'belongsTo'
Тип связи "многие к одному". Внешний ключ хранится в собственной таблице, в отличие от hasOne/hasMany.
Пример
Любая статья принадлежит определённому автору:
'hasOne'
Тип связи "один к одному". Внешний ключ хранится в связанной коллекции, в отличие от belongsTo.
Пример
У каждого пользователя есть профиль:
'hasMany'
Тип связи "один ко многим". Внешний ключ хранится в связанной коллекции, в отличие от belongsTo.
Пример
Любой пользователь может иметь несколько статей:
'belongsToMany'
Тип связи "многие ко многим". Использует промежуточную коллекцию для хранения внешних ключей обеих сторон. Если существующая коллекция не указана как промежуточная, она будет создана автоматически.
Пример
Любая статья может иметь несколько тегов, и любой тег может быть добавлен к нескольким статьям:

