NodeJS 如何在nestjs-telegraf中使用定制中间件?

ddrv8njm  于 2022-12-26  发布在  Node.js
关注(0)|答案(1)|浏览(149)

我正在尝试使用nestjs-telegraf库实现定制的Telegraf中间件,并使用Prisma连接到数据库。

@Module({
  imports: [
    TelegrafModule.forRootAsync({
      imports: [ConfigModule, LoggerModule],
      useFactory: (configService: ConfigService, logger: LoggerMiddleware) => {    
        return {
          token: configService.get<string>("TELEGRAM_TOKEN")!,
          middlewares: [sessionMiddleware, logger.use]
        };
      },
      inject: [ConfigService, LoggerMiddleware]
    }),
    PrismaModule
  ],
  controllers: [],
  providers: [...someProviders]
})
export class AppModule {}

记录器中间件:

@Injectable()
export class LoggerMiddleware {
  constructor(private readonly prisma: PrismaService) {}

  async use(ctx: Context, next: NextFunction) {
    const listUser = await this.prisma.user.findMany()
    console.log('listUser = ', listUser)
    next()
  }
}

记录器模块:

@Module({
  imports: [PrismaModule],
  providers: [LoggerMiddleware, PrismaService],
  exports: [LoggerMiddleware]
})
export class LoggerModule {}

它启动时没有错误,代码到达我的日志记录器中间件,但随后我收到一个错误:
TypeError:无法读取未定义的属性(阅读“prima”)
我可以从另一个提供程序访问Prisma服务,并且与DB的连接正常。开始时,nest成功初始化所有依赖项,但我不明白为什么在执行过程中出现此错误。我做错了什么?

envsm3lx

envsm3lx1#

Alexandria ·布哈拉在github上给出了答案

相关问题