Búsqueda de sitios web

javascript - Cómo inyectar un modelo si el modelo está solo en el módulo raíz


Quiero inyectar un modelo de MongoDB en el servicio de NestJS. El modelo está presente solo en el módulo raíz.

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();
    }
} 

Estoy recibiendo el siguiente error al iniciar la aplicación usando 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.

Contenidos de 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 { }

Respuesta #1

Tienes que importar adicionalmente tus esquemas con MongooseModule.forFeature. Normalmente, configurarías la conexión a la base de datos en el módulo raíz y luego importarías los esquemas en módulos de características dedicados. Por eso los imports están separados.

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

Para más información, consulte la documentación de Mongo.

Respuesta #2

Esto debería estar en el arreglo de importaciones de tu módulo

@Module({
  imports: [
    MongooseModule.forFeature([{ name: 'FolderName', schema: FolderSchema }]),
  ],
})

Artículos relacionados