Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询

Posted

技术标签:

【中文标题】Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询【英文标题】:Nestjs - Mongoose - virtual field - Not able to Query in graphql playground 【发布时间】:2021-09-08 16:08:45 【问题描述】:

我正在尝试在 nestjs-mongoose 中创建一个虚拟字段。 代码没有显示任何错误,但我无法在 graphql 操场上查询该虚拟字段。

我厌倦了使用 schema.virtual("virtualFieldName") 添加虚拟字段。 然后我为各自的模式启用了 virtuals: true 。但仍然无法查询该字段。

我是否需要在 DTO 文件中添加任何内容?

Entity.ts / 架构文件

@Schema(
  collection: 'v3_customer_account_selectors',
  timestamps:  createdAt: 'created_at', updatedAt: 'updated_at' ,
  toJSON:  virtuals: true ,
)
@Injectable( scope: Scope.TRANSIENT )
export class AccountSelectorEntity extends BaseEntity 

  @AliasableProp( alias: '_type', type: AccountSelectorType )
  type: AccountSelectorType;

  @Prop()
  name?: string;

  @AliasableProp( alias: 'last_checked', type: Date )
  lastChecked?: Date;

  @AliasableProp(
    type: SchemaTypes.ObjectId,
    alias: 'customer_id',
  )
  customerId?: Types.ObjectId;


export const AccountSelectorEntitySchema = SchemaFactory.createForClass(
  AccountSelectorEntity
);

AccountSelectorEntitySchema.set('toJSON',  getters: true, virtual: true );
AccountSelectorEntitySchema.set('toObject',  getters: true, virtual: true );

AccountSelectorEntitySchema.virtual('selector_type').get(function () 
  return 'TestReturn';
);```

【问题讨论】:

【参考方案1】:

您必须创建一个类型或另一个类,而不是使用实体。实体虚拟不在实体文档类中。

【讨论】:

以上是关于Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询的主要内容,如果未能解决你的问题,请参考以下文章

NestJS Mongoose 模式继承

使用猫鼬和nestJS自动增加字段

在 @nestjs/mongoose 中设置 mongoose 全局选项

NestJS - 如何自我引用 mongoDB 架构 @nestjs/mongoose?

@nestjs/mongoose 的文档

NestJS 和 Mongoose 使用 Mongoose-Sequence