有没有办法从 NestJS 中的模块文件访问数据库?

Is there any way to acces the database from a module file in NestJS?

我正在使用 nestJS 开发发送电子邮件功能,我正在使用 Nest Mailer; 有什么方法可以从数据库 table 中存储的字段中获取“主机”、“端口”、“用户”和“密码”?顺便说一下,我正在使用 TypeORM。 在 .module 文件中,我正在这样配置插件:

import { Module } from '@nestjs/common';
import { MailsController } from './controllers/mails.controller';
import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';
import { MailsService } from './services/mails.service';
import { MailerModule } from '@nestjs-modules/mailer';

@Module({
  controllers: [MailsController],
  providers: [MailsService],
  imports: [
    MailerModule.forRoot({
      transport: {
        host: 'smtp.gmail.com',
        port: 587,
        ignoreTLS: true,
        secure: true,
        auth: {
          user: "",
          pass: "",
        },
      },
      defaults: {
        to: 'alain@dsi.fr',
        from: '"nest-modules" <modules@nestjs.com>',
      },
      template: {
        dir: __dirname + '/templates',
        adapter: new HandlebarsAdapter(),
        options: {
          strict: true,
        },
      },
    }),],
  exports: [MailsService],
})
export class MailsModule { }

只要 MailerModule 有一个 forRootAsync 方法,您可以在其中定义 importsinjectuseFactory,那么是的,您可以对数据库的调用,假设您已经为此设置了实体。可能类似于

@Module({
  imports: [
    MailerModule.forRootAsync({
      imports: [TypeOrmModule.forFeature([MailerConfigEntity])],
      inject: [getRepositoryToken(MailerConfigEntity)],
      useFactory: async (mailerRepo: Repository<MailerConfigEntity>) => {
        const config = await mailerRepo.find();
        return { configObjectUsingConfig };
      }),
    }),
  ],
})