NestJS 嵌套模式中忽略 @Prop 和 mongoose 选项

@Prop and mongoose options is ignored in NestJS Nested Schema

我正在尝试构建其中包含嵌套对象的架构。我想在嵌套对象中设置默认值和必需值,但选项将被忽略。

task.entity.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 & Document
export const TaskSchema = SchemaFactory.createForClass(Task)

在我的task.service.ts:

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

如何插入对象并使用嵌套对象中的@Prop?我不想将它设置为一个 class。我要拆分内容

您需要构建一个架构并将其用作类型:

@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 & Document
export const TaskSchema = SchemaFactory.createForClass(Task)