Параметры @Prop и мангуста игнорируются во вложенной схеме NestJS

#javascript #typescript #mongodb #mongoose #nestjs

Вопрос:

Я пытаюсь построить схему с вложенным в нее объектом. Я хочу установить значения по умолчанию и обязательные для вложенного объекта, но параметры будут игнорироваться.

задача.сущность.ts

 @Schema()
export class Task {
    @Prop({ required: true }) // Is working
    language: Language

    @Prop({ type: TaskContent, required: true })
    content: TaskContent
}

class TaskContent extends Document {
    @Prop({ required: true, default: "Hello World" }) // This prop is ignored.
    message: string
}

export type TaskDocument = Task amp; Document
export const TaskSchema = SchemaFactory.createForClass(Task)

 

В моей задаче.обслуживание.ts:

 const task = new this.taskSchema({
...dataFromPostRequest
})
const result = await task.save()
return result
 

Как я могу вставить объект и использовать @Prop из вложенного объекта? Я не хочу помещать это в один класс. Я хотел бы разделить содержимое.

Ответ №1:

Вам нужно построить схему и использовать ее в качестве типа:

 @Schema()
export class Task {
    @Prop({ required: true })
    language: Language
 
    @Prop({ type: TaskContentSchema, required: true }) // Here
    content: TaskContent
}
 
class TaskContent extends Document {
    @Prop({ required: true, default: "Hello World" })
    message: string
}
 
const TaskContentSchema = SchemaFactory.createForClass(TaskContent) // Here
 
export type TaskDocument = Task amp; Document
export const TaskSchema = SchemaFactory.createForClass(Task)