【问题标题】:How to inject interface in module of nestjs app如何在nestjs app的模块中注入接口
【发布时间】:2020-08-06 18:45:51
【问题描述】:

这是错误截图:

我得到了很多关于这个问题的答案,但我没有得到任何正确的解决方案。当我从下面的代码中删除 UsersModule 时,我得到了邮递员中未找到的 404 错误。但是当我在下面的代码中编写 UsersModule 时,我得到了屏幕截图中提到的错误。

这里是app模块的代码:

@Module({
  imports: [UsersModule,MongooseModule.forRoot("mongodb://localhost:27017/jwt",{ useNewUrlParser: true })],
  controllers: [AppController],
  providers: [AppService]
})
export class AppModule {}

这是用户界面的代码:

import * as mongoose from 'mongoose'

export interface Usersinterface  extends mongoose.Document {
    readonly username: string;
    readonly password: string;
}

这是UsersModule的代码:

@Module({
  imports:[UsersModule],
  providers: [UsersService],
  controllers: [UsersController],
  exports:[UsersService]
})
export class UsersModule {}

这里是UsersService的代码:

@Injectable()
export class UsersService {
    private hashLength = 16;
    constructor(@InjectModel('Usersinterface') private readonly userModel:Model<Usersinterface>) {}

【问题讨论】:

    标签: typescript api jwt postman nestjs


    【解决方案1】:

    接口仅在编译时存在,用于类型检查,因此不能用于注入令牌。如果您希望为注入令牌使用“接口”,您可以将其与 @Inject() 和使用自定义提供程序的实际注入令牌结合,或者使用类接口(使没有逻辑的类更多地用作形状比实际的面向对象类。

    话虽如此,您似乎正在尝试将 Mongoose 模型注入您的 UsersService。为此,您需要确保在当前模块的imports 数组中有MongooseModule.forFeature([schemaObject])The sample on GitHub 是一个很好的例子。

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2019-12-26
      • 2020-04-17
      • 2018-12-24
      • 2023-03-05
      • 2016-05-18
      相关资源
      最近更新 更多