簡體   English   中英

使用 nestjs/mongoose 的鑒別器/單集合繼承

[英]discriminators/ single-collection-inheritance with nestjs/mongoose

問題

嗨,我正在嘗試使用nestjsmongo創建用戶集合。 我想要幾個方案,這些方案將從一個基本模式繼承,並有一個可以擴展的基本服務。

因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM