Typescript 如何在nest js应用程序的根应用程序模块中注入模型
您好,我的nest应用程序中有一个错误,下面是错误的屏幕截图: 以下是应用程序模块的代码:Typescript 如何在nest js应用程序的根应用程序模块中注入模型,typescript,jwt,nestjs,Typescript,Jwt,Nestjs,您好,我的nest应用程序中有一个错误,下面是错误的屏幕截图: 以下是应用程序模块的代码: @Module({ imports: [AppModule,CrudModule,MongooseModule.forRoot("mongodb://localhost:27017/mydb"),AuthModule,UsersModule,MulterModule.register({ dest:'./uploads', })], controllers: [AppControll
@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 {}
以下是型号代码:
export interface credentials extends mongoose.Document{
email:String,
password:String
}
以下是用户服务的代码:
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,
}
});
}
}
从'@nestjs/common'导入{Injectable};
//从'src/crud/DTO/login.DTO'导入{logindto}
从'src/crud/crud.model'导入{credentials,studentmodel}
从“mongoose”导入{model,model}
从'@nestjs/mongoose'导入{InjectModel}
//导出类型用户=任意;
@可注射()
导出类用户服务{
构造函数(@InjectModel('credentials')私有只读凭据:模型){}
//构造函数(@InjectModel('student')私有只读凭据:Model){}
异步findByEmail(用户名:字符串):承诺{
返回等待this.credentials.findOne({
其中:{
电子邮件:用户名,
}
});
}
}
尝试添加
MongooseModule.forFeature([{name:'credentials',schema:credentials}])
到AppModule的导入部分
体系结构方面的用户服务和身份验证应该封装在各自的模块中。除了kaznovac所说的,您还需要从
导入
阵列中删除您的AppModule
。此外,由于看起来您已经有了UsersModule
,您应该从AppModule
的提供程序数组中删除UsersModule
提供的任何提供程序。否则,Nest将再次尝试实例化这些提供程序。错误表明nestjs无法解析您的UsersService
的依赖项。发布添加的服务代码的代码。问题更新我有一个用于CRUD API的CrudModule。一个是根模块,即我在其中进行mongo db连接的AppModule。通过使用您的方法,我得到错误,错误:Nest无法解析CrudService(?)的依赖项。请确保索引[0]处的参数studentModel在CrudModule contextWell中可用,您在模块内使用的任何提供程序也需要导入到同一模块中。这是NestJS的基石。因此,您可以将CrudModule
添加到UsersModule
的imports
数组中,也可以使CrudModule
@Global()
,只需确保您知道自己在做什么。