我试图弄清楚如何在NestJs中注册模型,因为我总是得到一个错误:
Use mongoose.model(name, schema) {"0":"MissingSchemaError: Schema hasn't been registered for model \"ModuleSchema\".\nUse mongoose.model(name, schema)\n at NativeConnection.Connection.model (F:\\Code\\thorberg\\divo-backend\\node_modules\\mongoose\\lib\\connection.js:1132:11)\n`
字符串
我的目标是使用mongoose populate方法将引用的文档连接到其他集合中。
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { CreateModuleDto } from './dto/create-module.dto';
import { UpdateModuleDto } from './dto/update-module.dto';
import { Module, ModuleDocument } from './module.model';
@Injectable()
export class ModuleService {
constructor(@InjectModel(Module.name) private moduleModule: Model<ModuleDocument>) { }
findAll() {
return this.moduleModule.find().populate('modules');
}
}
型
我试过了,但这并不是最好的做法:
findAll() {
return this.moduleModule.find().populate('modules', ['name', 'isChecked'], this.moduleModule);
}
型
有没有办法在modul.modul.ts中的某个地方注册那个Model?
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { ModuleController } from './module.controller';
import { Module as M, ModuleSchema } from './module.model';
import { ModuleService } from './module.service';
@Module({
imports: [MongooseModule.forFeature([{ name: M.name, schema: ModuleSchema }])],
controllers: [ModuleController],
providers: [ModuleService],
exports: [ModuleService]
})
export class ModuleModule { }
型
1条答案
按热度按时间v440hwme1#
主要有两个原因,得到这个错误
1.可能忘记在模块中导入模型和架构
1.可能忘记在schema中添加或更改refer值,例如
字符串
这里ref必须是类的名称,即
型
此型号的classname,请检查