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>) {}
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>) {}