首页 > 解决方案 > 在 NestJS 嵌套模式中忽略 @Prop 和 mongoose 选项

问题描述

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

任务实体.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?我不想把它放在一个班级里。我想拆分内容。

标签: javascripttypescriptmongodbmongoosenestjs

解决方案


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

@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)
 

推荐阅读