Mongoose RefPath,使用 NestJS 运行 populate()

问题描述 投票:0回答:2

我使用 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
是否做错了什么,或者我是否遗漏了其他内容?

typescript mongoose nestjs populate
2个回答
1
投票

好吧,离开这个问题并回来后,我看到了我的错误。 我这个麻木的疯子犯了拼写错误。

这是我的参考路径:

refPath: 'ClientType'

这是我的模型:

clientType: String;

看到问题了吗? 看到问题了吗? 是啊,所以我想踢自己。


0
投票

这段代码有效吗? 我在我的巢项目中尝试过,但没有使用相同的过程

© www.soinside.com 2019 - 2024. All rights reserved.