我使用 Dynamic ref 通过 Schema 向 mongoose 注册。 我按照此处看到的文档进行操作: https://mongoosejs.com/docs/populate.html#dynamic-ref
@Schema({ collection: 'quotations' })
export class QuotationEntity {
@Prop({
required: true,
enum: {
values: ['PersonalClientEntity', 'CommercialClientEntity'],
message: 'Please supply a valid client type. Allowed: \'PersonalClientEntity\' or \'CommercialClientEntity\'.'
},
type: String
})
clientType: String;
@Prop({ type: MongooseSchema.Types.ObjectId, refPath: 'ClientType', required: true })
clientRef: Types.ObjectId;
}
因此,我在
clientRef
字段下保存了一个 ObjectId,该字段需要引用 clientType
字段。 因此,当我使用 populate()
方法时,它需要填充“PersonalClientEntity”或“CommercialClientEntity”。
所以我运行以下查询:
await this._model.find({ companyRef: companyId }).populate('clientRef').exec();
这不会填充任何内容。 当我替换架构中的
ref
并传递实际正确的引用时,如下所示:
@Prop({ type: MongooseSchema.Types.ObjectId, ref: 'PersonalClientEntity', required: true })
clientRef: Types.ObjectId;
那么
populate()
方法就完美了。 我的模式中的 refPath
是否做错了什么,或者我是否遗漏了其他内容?
好吧,离开这个问题并回来后,我看到了我的错误。 我这个麻木的疯子犯了拼写错误。
这是我的参考路径:
refPath: 'ClientType'
这是我的模型:
clientType: String;
看到问题了吗? 看到问题了吗? 是啊,所以我想踢自己。
这段代码有效吗? 我在我的巢项目中尝试过,但没有使用相同的过程