无法在 NestJS 应用程序中启动和运行猫鼬虚拟

问题描述

我目前正在从事一个非常需要虚拟人口的项目:

有一个客户方案、一个文档方案以及其他一些引用客户的方案。在客户内部,我想填充引用的项目。

我已经有一个使用 Typegoose 的工作模型,但由于后期不兼容,我不得不将其从项目中删除。这是它之前的工作方式:

  @prop({ 
    ref: () => DMSDocument,foreignField: 'linkedCustomers',// compare this value to the local document populate is called on
    localField: '_id',// compare this to the foreign document's value defined in "foreignField",justOne: false
  })
  public documents: { type: Types.ObjectId,ref: 'DMSDocument' }[];

现在我只是在删除 typegoose 后才尝试使用 nestjs/mongoose 来实现这一点:

@Prop({ 
    virtual: 'documents',ref: 'DMSDocument',localField: '_id',})
  public documents: DMSDocument[];

虚拟 getter 工作得很好,因为我只是在使用

@Schema({ toJSON: { virtuals: true,getters: true },toObject: { virtuals: true,getters: true }})

模型填充如下:

this.customerModel.findOne(params)
.populate('documents','','DMSDocument')
.populate('repairs','Repair')

我不知何故卡住了 - 我只是得到空数组,没有错误。我错过了什么?他们甚至可以使用 nestjs/mongoose 吗?

解决方法

好的,我设法让事情重新开始工作,但不是以首选的方式:

定义类并将其转换为模式后

export const CustomerSchema = SchemaFactory.createForClass(Customer);

我只需要“手动”添加虚拟人口:

CustomerSchema.virtual('documents',{
  ref: 'DMSDocument',localField: '_id',foreignField: 'links.customers',justOne: false
}); 

一切都按预期工作,但我更喜欢使用装饰器的方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...