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

发布于 2025-01-10 01:10:46 字数 1195 浏览 0 评论 0原文

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);

The discriminatorKey won't be filled up automatically. In other words, I cannot find the kind field on the saved document.

Database Module

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

User Schema

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

  @Prop()
  displayName: string;
}

export const UserSchema = SchemaFactory.createForClass(User);

Fan Schema

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

  displayName: string;
}

export const FanSchema = SchemaFactory.createForClass(Fan);

Save a Document

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

return this.userModel.create(userObj);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放赐 2025-01-17 01:10:46

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

错误使用

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

正确使用

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

I was injecting the wrong model, that's why the discriminatorKey couldn't be filled up automatically.

Wrong Use

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

Correct Use

constructor(@InjectModel(Fan.name) private readonly fanModel: Model<Fan>) {}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文