Mongoose RefPath,运行 populate() 与 NestJS
Mongoose RefPath, running populate() with NestJS
我使用 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();
这不会填充任何内容。当我替换 Schema 中的 ref
并传入实际的正确引用时,如下所示:
@Prop({ type: MongooseSchema.Types.ObjectId, ref: 'PersonalClientEntity', required: true })
clientRef: Types.ObjectId;
那么populate()
方法就完美了。我是在使用 refPath
的架构中做错了什么,还是遗漏了其他内容?
好的,所以在离开这个问题并回来后,我看到了我的错误。麻木的我,拼写错误
这是我的引用路径:
refPath: 'ClientType'
这是我的模型:
clientType: String;
看到问题了吗?看到问题了吗?
是啊,所以我想踢自己。
我使用 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();
这不会填充任何内容。当我替换 Schema 中的 ref
并传入实际的正确引用时,如下所示:
@Prop({ type: MongooseSchema.Types.ObjectId, ref: 'PersonalClientEntity', required: true })
clientRef: Types.ObjectId;
那么populate()
方法就完美了。我是在使用 refPath
的架构中做错了什么,还是遗漏了其他内容?
好的,所以在离开这个问题并回来后,我看到了我的错误。麻木的我,拼写错误
这是我的引用路径:
refPath: 'ClientType'
这是我的模型:
clientType: String;
看到问题了吗?看到问题了吗? 是啊,所以我想踢自己。