数据源配置选项
本页面由 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}"]
}