如果模型仅在根模块中,如何注入模型
Posted
技术标签:
【中文标题】如果模型仅在根模块中,如何注入模型【英文标题】:How to inject model if the model is in the root module only 【发布时间】:2019-05-07 20:00:22 【问题描述】:我想在 NestJS 服务中注入一个 mongo db 模型。该模型仅存在于根模块中。
import Injectable from '@nestjs/common';
import InjectModel from '@nestjs/mongoose';
import Model from 'mongoose';
import IFolderModel from './interfaces/folder.interface';
@Injectable()
export class FolderService
constructor(@InjectModel('IFolder') private folderModel: Model<IFolderModel>)
async create(folderInstance: IFolderModel): Promise<IFolderModel>
const folderModelToBeSaved = new this.folderModel(folderInstance);
return await folderModelToBeSaved.save();
async findAll(): Promise<IFolderModel[]>
return await this.folderModel.find().exec();
使用npm run start
启动应用程序时出现以下错误
Error: Nest can't resolve dependencies of the FolderService (?). Please make sure that the argument at index [0] is available in the AppModule context.
AppModule 的内容
let mongodb = env.mongodb;
let url = `mongodb://$mongodb.user:$mongodb.pwd@$mongodb.host:$mongodb.port/$mongodb.dbName`;
@Module(
imports: [MongooseModule.forRoot(url)],
controllers: [AppController, FolderController],
providers: [AppService, FolderService],
)
export class AppModule
【问题讨论】:
【参考方案1】:您还必须使用MongooseModule.forFeature
导入您的架构。通常,您会在根模块中设置数据库连接,然后在专用功能模块中导入模式。这就是为什么导入是分开的。
MongooseModule.forFeature([ name: 'Folder', schema: FolderSchema ])
如需更多信息,请参阅mongo docs。
【讨论】:
如果没有创建专用功能,有没有办法可以导入架构? 只需在与forRoot
导入相同的模块中执行MongooseModule.forFeature
导入。 :-)以上是关于如果模型仅在根模块中,如何注入模型的主要内容,如果未能解决你的问题,请参考以下文章