Fields декораторы
Модель объявляется как класс с набором полей, каждый из которых имеет определенный Field декоратор, включающий в себя описание поля для TypeORM, class-validator, @nestjs/swagger и служебные декораторы @steroidsjs. Существуют следующие Field декораторы:
BaseField- декоратор, содержащий базовый набор параметров для остальных декораторов.BooleanField- поле с булевым значением. Поддерживает параметры из BaseField, для данного поля настроен transform, преобразующий следующий набор значений к true:true, 1, 'true', '1', 'y', 'yes', 'д', 'да'ComputableField- поле, значение которого высчитывается во время создания экземпляра класса при помощи DataMapper. Принимает параметр callback c интерфейсомIComputableCallback. Пример использования:ts@ComputableField({ requiredRelations: ['positions'], callback: (item) => item.item.positions?.length, }) positionsCount: number;CoordinateField- поле для хранения координат. Хранится как дробь в строковом виде, для поля по-умолчанию заданы параметры precision=12 и scale=9CreateTimeField- поле, автоматически заполняющее время создания модели.DateField- поля для хранения даты. Для поля задан transform, преобразующий значения к ISO9075. Поддерживаются параметры валидации minDate и maxDate, в качестве которых можно передать string, Date и функцию, которая вернет нужное значение. Пример использования:ts@DateField({ label: 'Дата рождения', nullable: true, minDate: new Date(1920, 1, 1), maxDate: () => { const date = new Date(); date.setFullYear(date.getFullYear() - 14); return date; }, }) birthday: string;DateTimeField- поле для хранения даты и времени. Для поля задан transform, преобразующий значения к форматуyyyy-MM-dd HH:mm:ss.DecimalField- поля для хранения дробных чисел. В коде такое числе представлено как string, для использования number см. DecimalNumberField. Поддерживает параметры scale (кол-во знаков после запятой, по-умолчанию 2) и precision (общее количество цифр в числе, по-умолчанию 10)DecimalNumberField- поля для хранения дробных чиселDeleteDateField- поле, хранящее время удаления записи в случае использования Soft DeleteEmailField- поле для хранения email. Включает в себя валидацию на корректность указания emailEnumField- поле для хранения значений из словарей. Словарь необходимо передать в параметре enum. Поддерживаются словари, наследованные от класса BaseEnum, а также массивы.ExtendField- поле, позволяющее объявить новое поле на основе конфигурации поля из другой модели. Частый пример использования - объявить поле в классе dto на основе аналогичного поля из модели. Первым аргументом принимает класс с базовым полем, вторым аргументом можно передать объект с параметрами, которые нужно переопределить.Также можно задать параметр sourceFieldName, если название поля в базовом классе отличается.
Пример использования, в нём конфигурация для поля entityActionUid будет задана на основе поля uid из класса SyncMessageModel, кроме параметра nullable, который будет переопределен:
ts@ExtendField(SyncMessageModel, { nullable: true, sourceFieldName: 'uid', }) entityActionUid: string;FileField- ???HtmlField- ??? (не совсем понимаю, зачем это поле нужно)ImageField- ???IntegerField- поле для хранения целых чисел. Поддерживает валидацию по типу, минимальному и максимальному значениюJSONBField- поле, позволяющее хранить JSON в двоичном формате. Поддерживается только в СУБД PostgreSQL. Записывать можно объекты, массивы или отдельные значенияPasswordField- ??? (не совсем понимаю, зачем это поле нужно)PhoneField- поле для хранения номера телефона. Включает в себя валидацию на корректность указания номера, а также transform, приводящий номера к единому форматуPrimaryKeyField- поле для первичного ключа (id)RelationField- поле, позволяющее указывать связи между моделями. Поддерживаются типы связейOneToOne,ManyToMany,OneToManyиManyToOne.RelationIdField- поле с внешним ключом для связей с типомOneToOneиManyToOneStringField- поле для хранения строк. Поддерживается валидация длины строкиTextField- поле для хранения длинных строк. Поддерживается валидация длины строкиTimeField- поле для хранения времени в формате HH:mmUidField- поле для хранения и генерации uidUpdateTimeField- поле, автоматически заполняющее время последнего обновления модели.