Я подумываю написать валидатор, который проверяет, больше ли одно значение, чем другое.Например, цена покупки превышает цену продажи.
Но сначала мы должны убедиться, что цена продажи действительна.Таким образом, у нас может быть что-то вроде этого:
class Product {
@IsNumber
@IsPositive
purchasePrice: Number;
@IsNumber
@IsPositive
@IsGreaterThan('purchasePrice')
salesPrice: Number;
}
В этом случае @IsNumber
и @IsPositive
должны выполняться в обоих свойствах до того, как аннотация @IsGreaterThan
будет выполнена.
Мне интересно, является ли это чем-то простым для реализации (возможно, с некоторыми метаданными уровня класса) или мне просто нужно написать простые валидаторы функций для проверки такого типа вещей.
Я не эксперт по декорации, но одна мысль заключалась бы в том, чтобы в каждый декоратор были встроены метаданные валидации с использованием такого числа, чтобы выполнение валидаторов сортировалось по этому номеру.
Итакнапример, валидатору @IsGreaterThan может быть присвоен номер 2
, а другим - номер 1
, и это означает, что валидатор должен сначала выполнить тегированные валидаторы 1
, а затем 2
.