有没有一种方法可以用auto-generated _id在数组中创建每个文档?
我正在尝试这个模型:
// Nested Document
export class Group extends Document {
@Prop({ required: true, unique: true, auto: true, })
_id?: Types.ObjectId;
@Prop({ required: true })
count?: number;
...
}
// Main Document
@Schema()
export class Party extends Document {
@Prop({ required: true })
direction: string;
@Prop({ type: Array<Group>, required: true, _id: true })
groups: Array<Group>;
...
}
export const PartySchema = SchemaFactory.createForClass(Party);
字符串
但是在我的PartyService中,当我创建一个party时,nested _id并没有被创建。例如,如果我运行这个:
create(){
return await this.model.create({
direction: "Main st.",
groups: [
{
count: 5
},
{
count: 7
}
]
});
}
型
它只是创建一个文档如下:
{
_id: "a3d768f1..."
direction: "Main st.",
groups: [
{
count: 5
},
{
count: 7
}
],
createdAt: ...,
updatedAt: ...,
...,
}
型
3条答案
按热度按时间vc6uscn91#
在Mongoose中,当您使用模式在数组中定义嵌套文档时,子文档的_id字段不会自动生成。这是因为子文档被认为是嵌入的,而Mongoose默认情况下不会为嵌入的文档生成_id。
为了缓解这一挑战,您需要在保存交易方文档之前手动生成并分配
_id
。字符串
作为PartyService.create()的参数的groups值的示例可以是:
型
u4vypkhs2#
您可能忘记在嵌套的文档部分中添加它,而且您不必从Document扩展。所以
extends Document
可以跳过代码如下所示
字符串
如果不需要
__v
、timestamps
,也可以跳过这些,如下所示型
ecbunoof3#
字符串
请尝试此代码