有没有办法从 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
方法,您可以在其中定义 imports
、inject
和 useFactory
,那么是的,您可以对数据库的调用,假设您已经为此设置了实体。可能类似于
@Module({
imports: [
MailerModule.forRootAsync({
imports: [TypeOrmModule.forFeature([MailerConfigEntity])],
inject: [getRepositoryToken(MailerConfigEntity)],
useFactory: async (mailerRepo: Repository<MailerConfigEntity>) => {
const config = await mailerRepo.find();
return { configObjectUsingConfig };
}),
}),
],
})
我正在使用 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
方法,您可以在其中定义 imports
、inject
和 useFactory
,那么是的,您可以对数据库的调用,假设您已经为此设置了实体。可能类似于
@Module({
imports: [
MailerModule.forRootAsync({
imports: [TypeOrmModule.forFeature([MailerConfigEntity])],
inject: [getRepositoryToken(MailerConfigEntity)],
useFactory: async (mailerRepo: Repository<MailerConfigEntity>) => {
const config = await mailerRepo.find();
return { configObjectUsingConfig };
}),
}),
],
})