Nest Js Body Decorator автоматически приведен к подклассам - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть структура класса с 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, чтобы как-то передать подтипы в процессе преобразования, который вызывается в конвейере проверки по умолчанию.

Любая помощь приветствуется:)

...