标签导航:

如何在 nestjs 应用中使用 @nestjs/config 配置 prisma 数据库连接?

优雅地在 NestJS 应用中配置 Prisma 数据库连接

本文演示如何利用 @nestjs/config 模块在 NestJS 应用中高效配置 Prisma 数据库连接,避免直接在代码中硬编码敏感信息。

首先,安装必要的依赖包:@nestjs/config 和 Prisma。 然后,创建一个 config 文件夹,并在其中创建 database.config.ts 文件用于存储数据库配置。

在 database.config.ts 中,使用 @nestjs/config 的 registerAs 函数注册数据库配置。该函数接收配置名称和一个返回配置对象的函数。配置对象包含数据库连接参数(主机、端口、用户名、密码、数据库名),这些参数通常从环境变量中读取,以增强安全性。示例如下:

import { registerAs } from '@nestjs/config';

export default registerAs('database', () => ({
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT, 10),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
}));

接下来,在根模块 (通常是 app.module.ts) 中导入并配置 @nestjs/config 模块。ConfigModule.forRoot 方法接收一个 load 数组,包含 database.config 函数。同时,注入 ConfigService 和 PrismaService。

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import databaseConfig from './config/database.config';
import { PrismaService } from './prisma.service';

@Module({
  imports: [
    ConfigModule.forRoot({
      load: [databaseConfig],
    }),
  ],
  providers: [ConfigService, PrismaService],
})
export class AppModule {}

最后,创建一个 prisma.service.ts 文件,其中创建 Prisma 客户端实例。PrismaService 通过构造函数注入 ConfigService 获取数据库配置,并用这些配置实例化 PrismaClient。使用 onModuleDestroy 生命周期钩子在模块销毁时关闭数据库连接,释放资源。

这样,其他模块或服务可以通过注入 PrismaService 来方便地使用 Prisma 客户端进行数据库操作。 运行应用前,请确保已设置好环境变量或在 .env 文件中配置数据库参数。