Допустим, у человека есть класс Post
, который нужно проверить.
export class Post {
@IsArray()
tags: string[];
}
Давайте теперь предположим, что он хочет убедиться, что слово «ошибка» никогда не появляется в tags
поле. Для этого он пишет собственный декоратор проверки:
export function NoMistakes (validationOptions?: ValidationOptions) {
return function (object: Object, propertyName: string) {
registerDecorator({
name: 'noMistakes',
target: object.constructor,
propertyName: propertyName,
options: validationOptions,
validator: {
validate (tags: any, args: ValidationArguments) {
tags.forEach(tag => {
if (tag == 'mistake) {
return false
}
})
return true
}
})
}
}
Теперь он переписывает Post
следующим образом:
export class Post {
@IsArray()
@NoMistakes()
tags: string[];
}
Проблема возникает, например, когда теги не из наберите int
. В этом случае в пользовательском валидаторе возникает ошибка при попытке перебрать что-то, не являющееся массивом.
Как можно выполнить валидатор @IsArray
перед пользовательским валидатором? В общем, есть ли способ выбрать порядок проверок?