У меня есть структура класса с 4 различными объектами передачи данных, где я предоставляю декораторы проверки с помощью валидатора класса (стандарт для гнезда js). В основном три типа расширяют один супер тип. Теперь я хочу предоставить одну конечную точку, куда вы можете отправить тело, включающее любой из 4 типов, и конечная точка должна привести и проверить его соответствующим образом.
* Преобразователь класса предоставит эти параметры, предоставив объект дискриминатора, который будет выглядеть следующим образом:
@Type(() => Photo, {
discriminator: {
property: "__type",
subTypes: [
{ value: Landscape, name: "landscape" },
{ value: Portrait, name: "portrait" },
{ value: UnderWater, name: "underwater" }
]
}
})
topPhoto: Landscape | Portrait | UnderWater;
Однако я не вижу возможности использовать это в сочетании с @Body Decorator из Nest Js.
я также попытался применить декоратор @Type, предоставив один класс-обертку, который просто содержит свойство type
, а затем фактическое dto, как в пример выше. Однако выполнение проверки instanceof в конечной точке всегда возвращает только супер тип.
Я потерпел неудачу, когда попытался реализовать пользовательский канал проверки, расширяя реальный канал и пытаясь расширить аргумент Metadata, чтобы как-то передать подтипы в процессе преобразования, который вызывается в конвейере проверки по умолчанию.
Любая помощь приветствуется:)