Field - Поле
Обзор
Класс управления полями коллекции (абстрактный класс). Это также базовый класс для всех типов полей. Любой другой тип поля реализуется путем наследования этого класса.
О том, как настроить поля, см. в разделе Расширение типов полей.
Конструктор
Разработчики обычно не вызывают его напрямую, а в основном через метод db.collection({ fields: [] }) в качестве прокси-записи.
Расширение поля в основном реализуется путем наследования абстрактного класса Field и его последующей регистрации в экземпляре базы данных.
Сигнатура
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 встроены некоторые часто используемые типы полей, и вы можете напрямую использовать имя соответствующего типа, чтобы указать тип при определении полей для коллекции. Различные типы полей имеют разные конфигурации параметров. Подробную информацию см. в списке ниже.
Все элементы конфигурации для типов полей, за исключением представленных ниже, будут переданы в Sequelize, поэтому здесь можно использовать все элементы конфигурации полей, поддерживаемые Sequelize (например, allowNull, defaultValue и т. д.).
Кроме того, типы полей на стороне сервера в основном решают проблемы хранения базы данных и некоторых алгоритмов и по сути не связаны с типами отображения полей и используемыми компонентами внешнего интерфейса. Информацию о типах полей внешнего интерфейса см. в соответствующих учебных инструкциях.
'boolean'
Логический тип значения.
Пример
'integer'
Целочисленный тип (32-битный).
Пример
'bigInt'
Тип большого целого числа (64-разрядный).
Пример
'double'
Тип двойной точности с плавающей запятой (64-разрядный).
Пример
'real'
Тип действительного числа (только для PG).
'decimal'
Десятичный тип числа.
'string'
Тип строки. Эквивалент типа VARCHAR в большинстве баз данных.
Пример
'text'
Тип текста. Эквивалент типа TEXT в большинстве баз данных.
Пример
'password'
Тип пароля (расширение NocoBase). Шифрует пароли на основе метода scrypt собственного криптопакета Node.js.
Пример
Параметры
'date'
Тип даты.
'time'
Тип времени.
'array'
Тип массива (только для PG).
'json'
Тип JSON.
'jsonb'
Тип JSONB (только для PG, остальные будут совместимы как тип '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'
Тип связи «один к одному». Внешний ключ хранится в связанной коллекции, а не в коллекции ownTo.
Пример
У каждого пользователя есть профиль:
'hasMany'
Тип связи «один ко многим». Внешний ключ хранится в связанной коллекции, а не в коллекции ownTo.
Пример
Любой пользователь может иметь несколько сообщений:
'belongsToMany'
Тип связи «многие ко многим». Использует сквозную коллекцию для хранения внешних ключей обеих сторон. Если существующая коллекция не указана как сквозная коллекция, сквозная коллекция будет создана автоматически.
Пример
У любого сообщения может быть несколько тегов, и любой тег можно добавить к нескольким сообщениям:

