如何创建一个用Mongoose Document类型扩展的类

px9o7tmv  于 2023-05-29  发布在  Go
关注(0)|答案(2)|浏览(85)

我已经将我的应用程序设置为使用Mongoose来写入MongoDB数据库,它工作得很好。现在,我正试图添加一些测试,但在示例化测试中使用的模型类时遇到了麻烦。
这是我的文档的代码。

import { Document } from 'mongoose';
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { IsString, IsOptional, ValidateNested } from 'class-validator';

@Schema()
export class Group extends Document {
  @Prop()
  @IsString()
  readonly id: string;
  @Prop()
  @IsString()
  readonly name: string;
  @Prop({ type: Map})
  @ValidateNested()
  readonly properties?: Object;

  public static of(params: Partial<Group>): Group {
    const group = new Group();
    Object.assign(group, params);
    return group;
  }
}

export const GroupSchema = SchemaFactory.createForClass(Group);

我使用of方法来简化在测试文件中示例化类的过程。
下面是我在测试文件中使用的内容:

const fakeGroup: Group = Group.of({
    id: "1",
    name: "admins",
    properties: {
      plan: "free"
    }
  });

应该工作正常,因为我在其他应用程序中使用了这个。但在过去的应用程序中,类并没有从Document扩展。所以,现在,当我尝试运行测试时,我遇到了这个错误:

类型错误:无法读取undefined的属性(阅读'tree')

我做错了什么?
谢谢!

fafcakar

fafcakar1#

我可以通过在我的类定义中使用不同的方法来解决这个问题:

export type GroupDocument = Group & Document;

这允许我单独示例化Group。

oyt4ldly

oyt4ldly2#

对于想要使用Mongoose解决方案的人,我建议这一款。👏

import { HydratedDocument } from 'mongoose';

export type GroupDocument = HydratedDocument<Group>;

相关问题