• 使用 ormconfig.json
    • 从配置文件创建新连接
    • 使用ormconfig.json
    • 使用ormconfig.js
    • 使用环境变量
    • 使用ormconfig.yml
    • 使用ormconfig.xml
    • Typeorm使用哪个配置文件
    • 覆盖ormconfig中定义的选项

    使用 ormconfig.json

    从配置文件创建新连接

    大多数情况下,我们希望将连接选项存储在单独的配置文件中,因为此方式使管理变得更方便和容易。 TypeORM 支持多个配置源。你只需要在应用程序的根目录(package.json附近)中创建一个ormconfig.[format]文件存放连接配置,并在应用程序中调用createConnection(),而不传递任何参数配置:

    1. import { createConnection } from "typeorm";
    2. // createConnection方法会自动读取来自ormconfig文件或环境变量中的连接选项
    3. const connection = await createConnection();

    支持的 ormconfig 文件格式有:.json, .js, .env, .yml.xml.

    使用ormconfig.json

    在项目根目录(package.json附近)中创建ormconfig.json,并包含以下内容:

    1. {
    2. "type": "mysql",
    3. "host": "localhost",
    4. "port": 3306,
    5. "username": "test",
    6. "password": "test",
    7. "database": "test"
    8. }

    你可以参考ConnectionOptions来设置其他选项。

    如果要创建多个连接,则只需在数组中添加多个连接:

    1. [
    2. {
    3. "name": "default",
    4. "type": "mysql",
    5. "host": "localhost",
    6. "port": 3306,
    7. "username": "test",
    8. "password": "test",
    9. "database": "test"
    10. },
    11. {
    12. "name": "second-connection",
    13. "type": "mysql",
    14. "host": "localhost",
    15. "port": 3306,
    16. "username": "test",
    17. "password": "test",
    18. "database": "test"
    19. }
    20. ]

    使用ormconfig.js

    在项目根目录(package.json附近)中创建ormconfig.js,并包含以下内容:

    1. module.exports = {
    2. type: "mysql",
    3. host: "localhost",
    4. port: 3306,
    5. username: "test",
    6. password: "test",
    7. database: "test"
    8. };

    你可以参考ConnectionOptions来设置其他选项。

    如果要创建多个连接,则只需在数组中添加多个连接:

    使用环境变量

    在项目根目录(package.json附近)中创建.env 或者 ormconfig.env,并包含以下内容:

    1. TYPEORM_CONNECTION = mysql
    2. TYPEORM_HOST = localhost
    3. TYPEORM_USERNAME = root
    4. TYPEORM_PASSWORD = admin
    5. TYPEORM_DATABASE = test
    6. TYPEORM_PORT = 3000
    7. TYPEORM_SYNCHRONIZE = true
    8. TYPEORM_LOGGING = true
    9. TYPEORM_ENTITIES = entity/.*js,modules/**/entity/.*js

    可以设置的可用 env 变量列表:

    • TYPEORM_CONNECTION
    • TYPEORM_HOST
    • TYPEORM_USERNAME
    • TYPEORM_PASSWORD
    • TYPEORM_DATABASE
    • TYPEORM_PORT
    • TYPEORM_URL
    • TYPEORM_SID
    • TYPEORM_SCHEMA
    • TYPEORM_SYNCHRONIZE
    • TYPEORM_DROP_SCHEMA
    • TYPEORM_MIGRATIONS_RUN
    • TYPEORM_ENTITIES
    • TYPEORM_MIGRATIONS
    • TYPEORM_SUBSCRIBERS
    • TYPEORM_ENTITY_SCHEMAS
    • TYPEORM_LOGGING
    • TYPEORM_LOGGER
    • TYPEORM_ENTITY_PREFIX
    • TYPEORM_MAX_QUERY_EXECUTION_TIME
    • TYPEORM_ENTITIES_DIR
    • TYPEORM_MIGRATIONS_DIR
    • TYPEORM_SUBSCRIBERS_DIR
    • TYPEORM_DRIVER_EXTRA

    ormconfig.env只能在开发期间使用。在生产环境中,你可以在 ENVIRONMENT VARIABLES 中设置所有这些值。

    你无法使用env文件或环境变量定义多个连接。如果你的应用需要有多个连接,请使用其他配置替代。

    使用ormconfig.yml

    在项目根目录(package.json附近)中创建ormconfig.yml,并包含以下内容:

    1. default: # 默认连接
    2. host: "localhost"
    3. port: 3306
    4. username: "test"
    5. password: "test"
    6. database: "test"
    7. second-connection: # 其他连接
    8. host: "localhost"
    9. port: 3306
    10. username: "test"
    11. password: "test"
    12. database: "test2"

    你可以使用任一连接。

    使用ormconfig.xml

    在项目根目录(package.json附近)中创建ormconfig.xml,并包含以下内容:

    1. <connections>
    2. <connection type="mysql" name="default">
    3. <host>localhost</host>
    4. <username>root</username>
    5. <password>admin</password>
    6. <database>test</database>
    7. <port>3000</port>
    8. <logging>true</logging>
    9. </connection>
    10. <connection type="mysql" name="second-connection">
    11. <host>localhost</host>
    12. <username>root</username>
    13. <password>admin</password>
    14. <database>test2</database>
    15. <port>3000</port>
    16. <logging>true</logging>
    17. </connection>
    18. </connections>

    你可以使用任何可用的连接选项。

    Typeorm使用哪个配置文件

    有时你可能希望使用不同格式的多个配置。 当调用getConnectionOptions()或尝试在没有连接选项的情况下使用createConnection()时,Typeorm将尝试按以下顺序加载配置:

    1. 来自环境变量。 Typeorm将尝试使用dotEnv加载.env文件(如果存在)。 如果设置了环境变量TYPEORM_CONNECTIONTYPEORM_URL,Typeorm将使用此方法。
    2. 来自ormconfig.env
    3. 从另一个ormconfig.[format]文件,按此顺序:[js,ts,json,yml,yaml,xml]

    注意,Typeorm将使用找到的第一个有效方法,而不会加载其他方法。 例如,如果在环境中找到配置,Typeorm将不会加载ormconfig.[format]文件。

    覆盖ormconfig中定义的选项

    有时你希望覆盖 ormconfig 文件中定义的值,或者可能会在配置中附加一些 TypeScript / JavaScript 逻辑。 在这种情况下,你可以从 ormconfig 加载选项并构建ConnectionOptions,然后在将它们传递给createConnection函数之前,使用这些选项执行任何操作:

    1. // 从ormconfig文件(或ENV变量)读取连接选项
    2. const connectionOptions = await getConnectionOptions();
    3. // 使用connectionOptions做一些事情,
    4. // 例如,附加自定义命名策略或自定义记录器
    5. Object.assign(connectionOptions, { namingStrategy: new MyNamingStrategy() });
    6. // 使用覆盖后的连接选项创建连接
    7. const connection = await createConnection(connectionOptions);