[英]discriminators/ single-collection-inheritance with nestjs/mongoose
嗨,我正在嘗試使用nestjs
在mongo
創建用戶集合。 我想要幾個方案,這些方案將從一個基本模式繼承,並有一個可以擴展的基本服務。
因為nestjs/mongoose
沒有這樣的功能,所以我嘗試自己實現它,主要問題是我定義的唯一鍵在集合中不是唯一的
在這里我定義了兩個方案
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type UserDocument = User & Document;
@Schema()
export class User {
@Prop({ unique: true, type: 'string' })
username: string;
@Prop()
password: string;
@Prop()
created: Date;
@Prop()
updated: Date;
@Prop()
type: string;
@Prop()
name?: string
// roles: Role[];
}
export const UserSchema = SchemaFactory.createForClass(User);
@Schema()
export class EUser extends User {
@Prop()
language: string;
}
export const EUserSchema = SchemaFactory.createForClass(EUser);
export type EUserDocument = EUser & Document;
否 為了將它們保存到同一個集合中,我正在配置mongooseModule.forfeature
以使用以下內容:
@Module({
imports: [MongooseModule.forFeature([
{
name: EUser.name, schema: EUserSchema, collection: 'users'
}
])
]})
所以它將所有內容保存到同一個集合中,但不關心(甚至不創建!)關於唯一索引。
我發現這個函數可以加載服務中的索引
constructor(@InjectModel(User.name) protected UserModel: Model<UserDocument>) {
this.UserModel.createIndexes()
}
問題解決了 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.