如何解决如何在 nestjs mongoose 打字稿中引用嵌套文档
我是 nestjs 的新手。我使用 @nestjs/mongoose
并且我需要在我的类架构中引用嵌套对象中的多个字段,但我不知道该怎么做。
dietDays
对象必须包含一个日期字段和包含 2 个对 Meal
架构的引用的膳食对象。
正确的做法是什么?
下面的代码显示了我如何尝试这样做,以及我尝试的另一种方法是创建 dietDays
类并将其传递给 Prop 类型变量,但在这种情况下我无法引用Meal
架构,因为那不是架构。
@Schema()
export class Diet {
@Prop({ default: ObjectID })
_id: ObjectID
@Prop()
dietDays: [
{
date: string
meals: {
breakfast: { type: Types.ObjectId; ref: 'Meal' }
lunch: { type: Types.ObjectId; ref: 'Meal' }
}
},]
}
解决方法
你应该这样做:
创建一个类来引用饮食中的每一天(逻辑上有意义)
@Schema()
export class DayInDiet {
@Prop() date: string;
@Prop()
meals:
{
breakfast: { type: Types.ObjectId,ref: 'breakfast' }
launch: { type: Types.ObjectId,ref: 'launch' }
}
}
知道 breakfast
和 lunch
中的每一个都应该是有效的 mongo 模式。
如果 breakfast
和 lunch
不是架构,并且您有一个内容列表,您可以将此数组作为可能的选项传递给架构对象。
另一种可能的方式
@Schema()
export class DayInDiet {
@Prop() date: string;
@Prop()
meals: [
{ type: Types.ObjectId,ref: 'meal' } // note that meal should be the name of your schema
]
}
@Schema()
export class Meal {
@Prop() name: string;
@Prop() type: 'launch' | 'breakfast'
}
简单的说明,您不需要将 _id 设为任何架构的道具
编辑
对于饮食模式
@Schema()
export class Diet {
// list of props
// ...
@Prop()
dietDays: [
{ type: Types.ObjectId,ref: 'DayInDiet' }
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。