在 NestJS 嵌套模式中忽略 @Prop 和 mongoose 选项
Posted
技术标签:
【中文标题】在 NestJS 嵌套模式中忽略 @Prop 和 mongoose 选项【英文标题】:@Prop and mongoose options is ignored in NestJS Nested Schema 【发布时间】:2021-10-15 01:30:45 【问题描述】:我正在尝试构建一个包含嵌套对象的架构。我想在嵌套对象中设置默认值和必需值,但选项将被忽略。
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?我不想把它放在一个班级里。我想拆分内容。
【问题讨论】:
【参考方案1】:您需要构建一个 Schema 并将其用作类型:
@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)
【讨论】:
以上是关于在 NestJS 嵌套模式中忽略 @Prop 和 mongoose 选项的主要内容,如果未能解决你的问题,请参考以下文章
mongoose @prop() 装饰器类型:模式定义中的对象_NestJS
NestJS + Typeorm + Graphql:嵌套关系中 DTO 的正确设计模式