【问题标题】:Is there any way to acces the database from a module file in NestJS?有没有办法从 NestJS 中的模块文件访问数据库?
【发布时间】:2021-04-03 12:02:09
【问题描述】:

我正在使用nestJS 开发发送电子邮件功能,我正在使用Nest Mailer; 有没有办法从存储在数据库表中的字段中获取“主机”、“端口”、“用户”和“通行证”?顺便说一句,我正在使用 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 { }

【问题讨论】:

    标签: node.js nestjs nodemailer


    【解决方案1】:

    只要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 };
          }),
        }),
      ],
    })
    

    【讨论】:

    • 有没有办法在这段代码中使用服务我开发者?
    • 当然。将inject 数组视为您的构造函数,只要您将注入令牌(通常是类,但有时是字符串)传递给它,您就可以将它们注入useFactory 方法并在它们中使用这些注入的属性
    • @JayMcDoniel 它不起作用,因为我也想实现同样的目标,但遇到 useFactory 问题。你能指导我解决问题吗?
    • @KunalGhosh “它不工作”不会告诉其他任何人,除了你遇到了某种问题。特异性很好。我不知道您的代码是什么样的或您要做什么。最好打开一个新帖子,详细介绍正在发生的事情
    • @JayMcDoniel 您能否尝试调查一下我在几分钟后发布的这个问题?如果您提供一些可行的解决方案,这将非常有帮助....谢谢! stackoverflow.com/questions/70096364/…
    猜你喜欢
    • 2011-02-09
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多