【发布时间】:2022-01-15 01:38:27
【问题描述】:
当我在道具装饰器中使用嵌套的对象数组时:
@Schema()
export class Child {
@Prop()
name: string;
}
@Schema()
export class Parent {
@Prop({type: [Child], _id: false}) // don't need `_id` for nested objects
children: Child[];
}
export const ParentSchema = SchemaFactory.createForClass(Parent);
我收到一个错误:
TypeError: Invalid schema configuration: `Child` is not a valid type within the array `children`.
如果我需要使用@Prop({_id: false})(以保持嵌套架构独立),我该如何解决这个问题?
如果我们将道具装饰器更改为@Prop([Child]),它可以工作,但是我们需要为嵌套对象禁用_id:
@Schema({_id: false})
export class Child {
@Prop()
name: string;
}
@Schema()
export class Parent {
@Prop([Child])
children: Child[];
}
在这种情况下,我们不会有通用的 Child 对象,也不会将它们用作独立的 Schema。
另一种方法是创建Child 架构并在@Prop({type: [childSchema], _id: false}) 中使用它,但这看起来像是开销。
【问题讨论】:
标签: javascript mongoose nestjs typescript-decorator nestjs-mongoose