NestJS - Mongoose 鉴别器键不会自动填充

NestJS - Mongoose discriminator key won't be filled up automatically

discriminatorKey不会自动填写。换句话说,我在保存的文档中找不到 kind 字段。

数据库模块

@Global()
@Module({
  imports: [
    MongooseModule.forFeature([
      {
        name: User.name,
        schema: UserSchema,
        discriminators: [
          { name: Fan.name, schema: FanSchema },
        ],
      },
    ]),
  ],
  exports: [MongooseModule],
})
export class DatabaseModule {}

用户架构

@Schema({ discriminatorKey: 'kind' })
export class User {
  @Prop({ enum: [Fan.name], required: true })
  kind: string;

  @Prop()
  displayName: string;
}

export const UserSchema = SchemaFactory.createForClass(User);

粉丝架构

@Schema()
export class Fan {
  kind: string;

  displayName: string;
}

export const FanSchema = SchemaFactory.createForClass(Fan);

保存文档

const userObj = new Fan();
userObj.displayName = "Sam";

return this.userModel.create(userObj);

我注入了错误的模型,这就是为什么 discriminatorKey 无法自动填充的原因。

错误使用

constructor(@InjectModel(User.name) private readonly userModel: Model<User>) {}

正确使用

constructor(@InjectModel(Fan.name) private readonly fanModel: Model<Fan>) {}