Loopback 4 (как и Loopback 3) не поддерживает свойства min / max по умолчанию и не будет использовать его для проверки данных, отправляемых в API.Вы можете увидеть список поддерживаемых свойств свойств в документации для Loopback 3 , поскольку ничего не изменилось в Loopback 4.
Ниже приведен оператор из документации Loopback 4 :
Данные из тела запроса проверяются на соответствие его спецификации схемы OpenAPI.Мы используем модуль AJV для выполнения проверки, которая проверяет данные с помощью схемы JSON, сгенерированной из спецификации схемы OpenAPI.
Из Документация Open V3 API мы видим, что они поддерживают string
Тип данных и
Длина строки может быть ограничена с помощью minLength и maxLength:
AJV поддерживает свойства minLength и maxLength тоже , но по некоторым причинамВ Loopback 4 пока нет простого встроенного способа определения этих свойств с помощью декоратора @property.
В любом случае, я нашел обходной путь, который вы можете использовать сейчас:
import { Entity, model, property, Model } from '@loopback/repository';
import { getJsonSchema } from '@loopback/repository-json-schema';
@model()
export class MyModel extends Model {
@property({
type: 'string',
required: true,
})
name: string;
constructor(data?: Partial<MyModel>) {
super(data);
}
static initialize() {
let jsonSchema = getJsonSchema(MyModel) as any;
jsonSchema.properties.name.minLength = 2;
jsonSchema.properties.name.maxLength = 255;
}
}
MyModel.initialize();
Обратите внимание, что вся магия происходит в методе MyModel.initialize
, где я инициализирую jsonSchema
, используя стандартную функцию getJsonSchema
(часть обратной петли).Затем я расширяю этот jsonSchema
дополнительными minLength
и maxLength
свойствами.Внутри функции getJsonSchema
они используют кэш для схем json, поэтому схема генерируется только один раз для каждой модели в течение жизненного цикла приложения, что гарантирует, что значения, которые мы установим, будут оставаться там каждый раз, когда эта схема json будет запрошена позже.
Вы также можете увидеть связанные проблемы на странице Github Loopback Next:
Надеемся, что в какой-то момент они будут поддерживать эти типы валидаций, а также пользовательские валидаторы, изначально встроенные в Loopback-декораторы.