Nest JS, Typescript, Mon goose схема для атрибута, использующего общий c класс, который имеет несколько подклассов - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в Mon goose и Nest JS, и я столкнулся с ситуацией, когда у меня есть общий c класс, который имеет несколько реализаций, а общий c класс используется в моей схеме, Я хочу использовать проверку Mon goose, поэтому моя схема должна быть точной, чтобы каждый экземпляр в моем массиве проверялся в зависимости от его типа (это идеальное решение, но я могу реализовать настраиваемую проверку, если нет возможности сделать это работает)

Вот пример, который может описать проблему, с которой я сталкиваюсь:

@Schema()
class Animal {
    @Prop({ required : true })
    name: string;
}

@Schema()
class Dog extends Animal {
    @Prop({ required : true })
    breed: string;
}

@Schema()
class Cow extends Animal {
    @Prop({ required : true })
    weight: number;
}

const animalSchema = SchemaFactory.createForClass(Animal);
const dogSchema = SchemaFactory.createForClass(Dog);
const cowSchema = SchemaFactory.createForClass(Cow);

@Schema()
class MyFarm {
    @Prop([ /* I need to be able to have instances of Dogs and Cow and have appropriate validation depending on which instance I have */ ])
    animals: Animal[];
}

В этом случае тип моих экземпляров может быть защищен наличием породы или веса.

Мне интересно, можно ли это сделать с Mon goose (использовать наследование / подтипы со схемами) или мне нужно определить схему с объединенными полями всех моих подклассов, все необязательно, и написать настраиваемую проверку .

Я попытался изучить использование дискриминаторов, но я не уверен, как его можно интегрировать в этот вариант использования и с помощью Nest JS.

Than ks за вашу помощь! Возможно, я неправильно смотрю на эту проблему, поскольку я новичок в этом технологическом стеке и имею строго типизированный фон, поэтому, пожалуйста, дайте мне знать, если мне нужно изменить свой подход.

...