工具版本
- nodejs:20.9.0
- npm:10.1.0
- nestjs:10.0.0
相关包
dotenv用来解析.env文件
pnpm i dotenv typeorm @nestjs/typeorm mysql2
配置typeorm
大概思路:将数据库的一些基础配置放到环境变量中,比如数据库的账号,密码,库名,端口号等,利用dotenv去解析.env文件,最后导出配置项,并且在app.module.ts中使用
匹配所有实体时const entitiesDir = [path.join(__dirname, '../**/*.entity{.ts,.js}')]
,路径容易配置错误,若报错,请先确认路径是否配置正确
注意:synchronize配置项正式环境下不要设置true,此配置会同步数据库和实体,有可能导致数据库中表的数据被清空,可以参考typeorm官方文档,有具体的解决方案
创建配置文件src/config/orm.config.ts
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
import * as fs from 'fs';
import * as dotenv from 'dotenv'
import { DB_Enum } from "src/enums/typeorm-config.enum";
import * as path from "path";
// 匹配所有实体
const entitiesDir = [path.join(__dirname, '../**/*.entity{.ts,.js}')]
// 通过环境变量读取不同的.env文件
function getEnv(env: string): Record<string, string> {
if (fs.existsSync(env)) {
return dotenv.parse(fs.readFileSync(env))
}
return {}
}
// 通过dotENV来解析不同的配置
function buildConnectionOptions() {
const defaultConfig = getEnv