typeorm.env
文件是 TypeORM 用来配置数据库连接选项的一个自定义环境文件。在 TypeORM 中,默认的配置文件是 ormconfig.json
、ormconfig.js
、ormconfig.yml
等,但是您可以通过环境变量来指定不同的文件或直接在环境变量中设置配置。
如果您想要使用 .env
文件来配置 TypeORM,您需要首先安装 dotenv
库来加载 .env
文件中的环境变量。这里是如何做的一些步骤:
- 安装
dotenv
库:
shellnpm install dotenv
- 创建
.env
文件:
在项目的根目录下创建一个 .env
文件,并在这个文件中设置您的数据库连接选项。例如:
shell# .env TYPEORM_CONNECTION=postgres TYPEORM_HOST=localhost TYPEORM_USERNAME=myuser TYPEORM_PASSWORD=mypassword TYPEORM_DATABASE=mydatabase TYPEORM_PORT=5432 TYPEORM_SYNCHRONIZE=true TYPEORM_LOGGING=true TYPEORM_ENTITIES=src/entity/*.ts
- 在应用程序入口点加载
.env
文件:
在您的应用程序的入口点,比如 index.ts
或 app.ts
,您需要使用 dotenv
库加载 .env
文件。
typescriptimport 'dotenv/config'; // 其他应用程序导入和代码...
- 配置 TypeORM:
使用环境变量来配置 TypeORM。如果您正在使用 TypeScript,可以创建一个数据源实例并使用这些变量,如下所示:
typescriptimport { DataSource } from 'typeorm'; const AppDataSource = new DataSource({ type: process.env.TYPEORM_CONNECTION as any, host: process.env.TYPEORM_HOST, port: parseInt(process.env.TYPEORM_PORT), username: process.env.TYPEORM_USERNAME, password: process.env.TYPEORM_PASSWORD, database: process.env.TYPEORM_DATABASE, synchronize: process.env.TYPEORM_SYNCHRONIZE === 'true', logging: process.env.TYPEORM_LOGGING === 'true', entities: [process.env.TYPEORM_ENTITIES], }); export default AppDataSource;
- 启动您的应用程序:
现在,当您启动应用程序时,TypeORM 会使用 .env
文件中的设置来连接数据库。
例子:
假设我们有一个简单的 Node.js 应用程序使用 TypeORM 连接 PostgreSQL 数据库。以下是 .env
文件:
shell# .env TYPEORM_CONNECTION=postgres TYPEORM_HOST=localhost TYPEORM_USERNAME=postgres TYPEORM_PASSWORD=postgres123 TYPEORM_DATABASE=test_db TYPEORM_PORT=5432 TYPEORM_SYNCHRONIZE=true TYPEORM_LOGGING=false TYPEORM_ENTITIES=dist/entity/**/*.js
在 index.ts
中:
typescriptimport 'dotenv/config'; import { DataSource } from 'typeorm'; import AppDataSource from './data-source'; AppDataSource.initialize() .then(() => { // 数据库初始化成功后的逻辑... console.log('Data Source has been initialized!'); }) .catch((error) => { console.error('Error during Data Source initialization:', error); });
这样,您就可以通过环境变量灵活地配置您的数据库连接,同时也能够根据不同的环境(开发、测试、生产等)轻松切换配置。
2024年6月29日 12:07 回复