跳至主内容区

数据源配置选项

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

什么是 DataSourceOptions?

DataSourceOptions 是在创建新 DataSource 实例时传入的数据源配置对象。 不同的关系型数据库管理系统(RDBMS)有各自特定的配置选项。

通用数据源选项

  • type - 数据库类型。必须明确指定所使用的数据库引擎。 可选值包括: "mysql", "postgres", "cockroachdb", "sap", "spanner", "mariadb", "sqlite", "cordova", "react-native", "nativescript", "sqljs", "oracle", "mssql", "mongodb", "aurora-mysql", "aurora-postgres", "expo", "better-sqlite3", "capacitor"。 此选项为必填项

  • extra - 传递给底层驱动程序的额外配置项。 当需要向底层数据库驱动传递特殊设置时使用此选项。

  • entities - 为本数据源加载并使用的实体或实体模式。 可接受实体类、实体模式类以及待加载的目录路径。 目录路径支持 glob 模式匹配。 示例:entities: [Post, Category, "entities/*.js", "modules/**/entities/*.js"]。 详细了解实体。 详细了解实体模式

  • subscribers - 为本数据源加载并使用的订阅器。 可接受实体类或待加载的目录路径。 目录路径支持 glob 模式匹配。 示例:subscribers: [PostSubscriber, AppSubscriber, "subscribers/*.js", "modules/**/subscribers/*.js"]。 详细了解订阅器

  • logging - 是否启用日志记录。 设置为 true 时将启用查询日志和错误日志。 也可指定启用特定类型的日志,例如 ["query", "error", "schema"]。 详细了解日志记录

  • logger - 用于日志记录的记录器。可选值包括 "advanced-console"、"formatted-console"、"simple-console" 和 "file"。 默认值为 "advanced-console"。也可指定实现 Logger 接口的自定义记录器类。 详细了解日志记录

  • maxQueryExecutionTime - 当查询执行时间超过此设定值(毫秒)时, 记录器将记录该查询。

  • poolSize - 配置连接池中活动连接的最大数量。

  • namingStrategy - 用于命名数据库表和字段的命名策略。

  • entityPrefix - 为当前数据源的所有表(或集合)添加统一前缀。

  • entitySkipConstructor - 指示 TypeORM 在从数据库反序列化实体时是否跳过构造函数调用。 注意:跳过构造函数时,私有属性和默认属性可能无法按预期工作。

  • dropSchema - 每次初始化数据源时删除数据库模式。 请谨慎使用此选项,切勿在生产环境启用——否则将丢失所有生产数据。 此选项适用于调试和开发阶段。

  • synchronize - 是否在每次应用启动时自动创建数据库模式。 请谨慎使用此选项,切勿在生产环境启用——否则可能导致生产数据丢失。 此选项适用于调试和开发阶段。 替代方案是使用 CLI 运行 schema:sync 命令。 注意:对于 MongoDB 数据库不会创建模式(因其无模式特性), 仅通过创建索引实现同步。

  • migrations - 为本数据源加载并使用的数据迁移

  • migrationsRun - 是否在每次应用启动时自动运行数据迁移

  • migrationsTableName - 存储已执行迁移记录的数据库表名称。

  • migrationsTransactionMode - 控制在运行 迁移 时的事务模式。

  • metadataTableName - 数据库中存储表元数据信息的表名。 默认表名为 "typeorm_metadata"。

  • cache - 启用实体结果缓存。可在此配置缓存类型及其他缓存选项。 详细了解缓存机制请参阅此处

  • isolateWhereStatements - 启用 WHERE 语句隔离,自动为每个 WHERE 子句添加括号。 例如:.where("user.firstName = :search OR user.lastName = :search") 会生成 WHERE (user.firstName = ? OR user.lastName = ?) 而非 WHERE user.firstName = ? OR user.lastName = ?

  • invalidWhereValuesBehavior - 控制所有 TypeORM 操作(查找操作、查询构建器、Repository 方法)中 WHERE 条件对 null 和 undefined 值的处理方式:

    • null 处理选项:
      • 'ignore'(默认)- 跳过 null 属性
      • 'sql-null' - 将 null 转换为 SQL NULL
      • 'throw' - 抛出错误
    • undefined 处理选项:
      • 'ignore'(默认)- 跳过 undefined 属性
      • 'throw' - 抛出错误

    示例:invalidWhereValuesBehavior: { null: 'sql-null', undefined: 'throw' }

    详细了解 Null 和 Undefined 的处理

数据源配置选项示例

以下是 MySQL 数据源配置的简单示例:

{
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
logging: true,
synchronize: true,
entities: [__dirname + "/entities/**/*{.js,.ts}"],
subscribers: [__dirname + "/subscribers/**/*{.js,.ts}"],
entitySchemas: [__dirname + "/schemas/**/*.json"],
migrations: [__dirname + "/migrations/**/*{.js,.ts}"]
}