我正在嘗試使用 nest.js 和 mongoose 做後端開發。
我有一個 Schema 結構類似如下:
@Schema({ _id: false })
class Chirdren {
@Prop({ required: true, type: String })
Name: string;
@Prop({ type: [SchemaFactory.createForClass(Chirdren)] })
ChildNodes: [Chirdren];
}
const ChirdrenSchema = SchemaFactory.createForClass(Chirdren);
class Menu {
@Prop({ required: true })
Title: string;
@Prop({
required: true,
type: [ChirdrenSchema],
})
Contents: [Chirdren];
}
目前這樣 Schema 在 Menu 類的 Contents 有效,但在 Chirdren 底下 ChildNodes 就沒有辦法了。
我希望 ChildNodes 底下結構和 Chirdren 一樣,要怎麼做才能夠循環引用自身 Schema ?又或者有其他的作法?
希望有人能幫忙解答。
感謝~
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
@Schema({ _id: false })
class Children extends Document {
@Prop({ required: true, type: String })
Name: string;
@Prop({
type: [{ type: SchemaTypes.ObjectId, ref: 'Children' }],
})
ChildNodes: Children[];
}
const ChildrenSchema = SchemaFactory.createForClass(Children);
@Schema()
export class Menu extends Document {
@Prop({ required: true })
Title: string;
@Prop({
required: true,
type: [{ type: SchemaTypes.ObjectId, ref: 'Children' }],
})
Contents: Children[];
}