gpt4 book ai didi

mongoose - 如何在nestjs mongoose typescript中引用嵌套文档

转载 作者:行者123 更新时间:2023-12-05 04:50:26 31 4
gpt4 key购买 nike

我是 nestjs 的新手。我使用 @nestjs/mongoose,我需要在我的类模式中引用嵌套对象中的几个字段,但我不知道该怎么做。

dietDays 对象必须包含一个日期字段和包含对 Meal 架构的 2 个引用的 meals 对象。

正确的做法是什么?

下面的代码显示了我是如何尝试这样做的,以及我尝试的另一种方法是创建 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' }
}
}

知道 breakfastlunch 中的每一个都应该是有效的 mongo 模式。

如果 breakfastlunch 不是模式,并且您有一个内容列表,您可以将此数组作为它们在模式对象内的可能选项传递。

另一种可能的方式

@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 设为任何模式的 prop

编辑

对于饮食模式

@Schema()
export class Diet {
// list of props
// ...
@Prop()
dietDays: [
{ type: Types.ObjectId, ref: 'DayInDiet' }
]
}

关于mongoose - 如何在nestjs mongoose typescript中引用嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67280167/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com