typescript - Cómo inyectar un modelo en el módulo raíz de la aplicación en una aplicación Nest JS
Hola, tuve un error en mi aplicación Nest, aquí está la captura de pantalla del error:
Aquí está el código del módulo de la aplicación:
@Module({
imports: [AppModule,CrudModule,MongooseModule.forRoot("mongodb://localhost:27017/mydb"),AuthModule,UsersModule,MulterModule.register({
dest:'./uploads',
})],
controllers: [AppController],
providers: [AppService,AuthService,UsersService,JwtService],
})
export class AppModule {}
Aquí está el código del modelo:
export interface credentials extends mongoose.Document{
email:String,
password:String
}
Aquí está el código de UsersServices:
import { Injectable } from '@nestjs/common';
//import {logindto} from 'src/crud/DTO/login.dto'
import {credentials, studentmodel} from 'src/crud/crud.model'
import {model,Model} from 'mongoose'
import {InjectModel} from '@nestjs/mongoose'
//export type User = any;
@Injectable()
export class UsersService {
constructor(@InjectModel('credentials')private readonly credentials:Model<credentials> ) {}
//constructor(@InjectModel('student')private readonly credentials:Model<studentmodel> ){}
async findByEmail(username: string): Promise<any> {
return await this.credentials.findOne({
where: {
email: username,
}
});
}
}
Respuesta #1
intenta agregar MongooseModule.forFeature([{ name: 'credentials', schema: credentials }]) a la sección de importaciones del AppModule.
En términos de arquitectura, los servicios de usuario y la autenticación deberían estar encapsulados en sus propios módulos.
Respuesta #2
Además de lo que dijo kaznovac, necesitas eliminar tu AppModule del array imports. Además, ya que parece que ya tienes un UsersModule, deberías eliminar cualquier proveedor que el UsersModule proporcione del array providers del AppModule. De lo contrario, Nest intentará hacer instancias de esos proveedores nuevamente.
