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

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

您好,我的nest应用程序中有一个错误,下面是错误的屏幕截图:

以下是应用程序模块的代码:

@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()
,只需确保您知道自己在做什么。