【问题标题】:Adding Methods Mongoose Schema w/NestJS使用 NestJS 添加方法 Mongoose Schema
【发布时间】:2022-01-24 02:12:24
【问题描述】:

我需要一个附加到我的 Schema 类型的转换方法。如何在不重复代码的情况下完成?如果我删除类方法asGrpcProgram 我得到以下错误:

src/programs/programs.controller.ts:129:30 - error TS2339: Property 'asGrpcProgram' does not exist on type 'Program'.

如果我删除分配给ProgramSchema.methods.asGrpcProgram 的函数表达式,在运行时调用该方法时会出现以下错误:

ERROR [RpcExceptionsHandler] program.asGrpcProgram is not a function

import { grpc } from 'lis-protobuf';
import { Document } from 'mongoose';

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';

@Schema()
export class Program extends Document {
  @Prop({ required: true })
  name: string;

  @Prop()
  externalId: string;

  @Prop([String])
  skillIds: string[];

  public asGrpcProgram(): grpc.Program {
    const { id, name, externalId, skillIds } = this;
    return { id, name, externalId, skillIds };
  }
}

export const ProgramSchema = SchemaFactory.createForClass(Program);

ProgramSchema.methods.asGrpcProgram = function (): grpc.Program {
  const { id, name, externalId, skillIds } = this;
  return { id, name, externalId, skillIds };
};

【问题讨论】:

    标签: mongoose nestjs mongoose-schema


    【解决方案1】:

    正如here所说,你可以:

    import { grpc } from 'lis-protobuf';
    import { Document } from 'mongoose';
    
    import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
    
    @Schema()
    export class Program extends Document {
      @Prop({ required: true })
      name: string;
    
      @Prop()
      externalId: string;
    
      @Prop([String])
      skillIds: string[];
    
      asGrpcProgram: Function;
    }
    
    export const ProgramSchema = SchemaFactory.createForClass(Program);
    
    ProgramSchema.methods.asGrpcProgram = function (): grpc.Program {
      const { id, name, externalId, skillIds } = this;
      return { id, name, externalId, skillIds };
    };
    

    注意:如果上述方法后错误仍然存​​在,请尝试this一个。

    【讨论】:

      猜你喜欢
      • 2019-11-12
      • 2023-03-14
      • 2023-03-17
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2014-11-13
      • 2020-11-11
      相关资源
      最近更新 更多