如果模型仅在根模块中,如何注入模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果模型仅在根模块中,如何注入模型相关的知识,希望对你有一定的参考价值。

我想在NestJS服务中注入一个mongodb模型。该模型仅存在于根模块中。

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 { }
答案

您还必须使用MongooseModule.forFeature导入您的模式。通常,您将在根模块中设置数据库连接,然后在专用功能模块中导入模式。这就是进口是分开的原因。

MongooseModule.forFeature([{ name: 'Folder', schema: FolderSchema }])

有关详细信息,请参阅mongo docs

以上是关于如果模型仅在根模块中,如何注入模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌套js应用程序的根应用程序模块中注入模型

仅在满足父模型的给定条件时如何获取模型关系

是否可以仅在我的项目中使用 Django 模型模块?

Laravel:如何仅在模型关系存在时才查询模型关系

Prism:如何在区域中注入视图模型实例?

我如何使用视图模型从另一个片段访问函数