#node.js #mongoose #nestjs
#node.js #мангуст #nestjs
Вопрос:
Проблема
Привет, я пытаюсь создать коллекцию пользователей в mongo
with nestjs
. Я хочу иметь пару схем, которые будут наследоваться от одной базовой схемы, и иметь базовую службу, которую можно расширить.
Поскольку nestjs/mongoose
у меня нет такой функции, я попытался реализовать ее самостоятельно, и основная проблема заключается в том, что уникальный ключ, который я определил, не является уникальным в коллекции
некоторый код
Здесь я определяю две схемы
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type UserDocument = User amp; 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 amp; Document;
Нет, чтобы сохранить их в одну и ту же коллекцию, я настраиваю mongooseModule.forfeature
для использования следующее:
@Module({
imports: [MongooseModule.forFeature([
{
name: EUser.name, schema: EUserSchema, collection: 'users'
}
])
]})
Таким образом, он сохраняет все в одну и ту же коллекцию, но не заботится (и даже не создает!) Об уникальном индексе.
Ответ №1:
Я нашел эту функцию, которая загружает индексы в сервис
constructor(@InjectModel(User.name) protected UserModel: Model<UserDocument>) {
this.UserModel.createIndexes()
}
Проблема решена 🙂