跳转到主要内容

数据源选项

  • [什么是 DataSourceOptions](#什么是 DataSourceOptions)
  • 通用数据源选项
  • [mysql / mariadb 数据源选项](#mysql / mariadb 数据源选项)
  • [postgres / cockroachdb 数据源选项](#postgres / cockroachdb 数据源选项)
  • [sqlite 数据源选项](#sqlite 数据源选项)
  • [better-sqlite3 数据源选项](#better-sqlite3 数据源选项)
  • [capacitor 数据源选项](#capacitor 数据源选项)
  • [cordova 数据源选项](#cordova 数据源选项)
  • [react-native 数据源选项](#react-native 数据源选项)
  • [nativescript 数据源选项](#nativescript 数据源选项)
  • [mssql 数据源选项](#mssql 数据源选项)
  • [mongodb 数据源选项](#mongodb 数据源选项)
  • [sql.js 数据源选项](#sql.js 数据源选项)
  • [expo 数据源选项](#expo 数据源选项)
  • 数据源选项示例

什么是 DataSourceOptions

DataSourceOptions 是在创建新的 DataSource 实例时传递的数据源配置。不同的 RDBMS 有自己的特定选项。

通用数据源选项

  • type - RDBMS 类型。您必须指定使用的数据库引擎。 可能的值有: "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, "entity/*.js", "modules/**/entity/*.js"]。 了解更多关于 实体。 了解更多关于 实体模式

  • subscribers - 要为此数据源加载和使用的订阅者。 接受实体类和要从中加载的目录路径。 目录支持 glob 模式。 示例:subscribers: [PostSubscriber, AppSubscriber, "subscriber/*.js", "modules/**/subscriber/*.js"]。 了解更多关于 订阅者

  • migrations - 要为此数据源加载和使用的迁移。 接受迁移类和要从中加载的目录路径。 目录支持 glob 模式。 示例:migrations: [FirstMigration, SecondMigration, "migration/*.js", "modules/**/migration/*.js"]。 了解更多关于 迁移

  • logging - 指示是否启用日志记录。 如果设置为 true,则启用查询和错误日志记录。 您还可以指定要启用的不同类型的日志记录,例如 ["query", "error", "schema"]。 了解更多关于 日志记录

  • logger - 用于记录日志的记录器。可能的值为 "advanced-console"、"simple-console" 和 "file"。 默认值为 "advanced-console"。您还可以指定实现 Logger 接口的记录器类。 了解更多关于 日志记录

  • maxQueryExecutionTime - 如果查询执行时间超过给定的最大执行时间(以毫秒为单位) 那么记录器将记录此查询。

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

  • namingStrategy - 用于在数据库中命名表和列的命名策略。

  • entityPrefix - 使用给定字符串为该数据源上的所有表(或集合)添加前缀。

  • entitySkipConstructor - 指示 TypeORM 是否在从数据库反序列化实体时跳过构造函数。 请注意,当您不调用构造函数时,私有属性和默认属性将无法正常运行。

  • dropSchema - 每次初始化数据源时删除模式。 请谨慎使用此选项,不要在生产环境中使用,否则您将丢失所有生产数据。 在调试和开发过程中,此选项非常有用。

  • synchronize - 指示是否在每次应用程序启动时自动创建数据库模式。 请谨慎使用此选项,不要在生产环境中使用,否则您可能会丢失生产数据。 在调试和开发过程中,此选项非常有用。 作为替代方案,您可以使用 CLI 并运行 schema:sync 命令。 请注意,对于 MongoDB 数据库,它不会创建模式,因为 MongoDB 是无模式的。 相反,它仅通过创建索引进行同步。

  • migrationsRun - 指示是否在每次应用程序启动时自动运行迁移。 作为替代方案,您可以使用 CLI 并运行 migration:run 命令。

  • migrationsTableName - 数据库中将包含已执行迁移信息的表的名称。 默认情况下,该表称为 "migrations"。

  • migrationsTransactionMode - 控制迁移的事务(默认值:all),可以是 all | none | each 之一

  • metadataTableName - 数据库中将包含表元数据信息的表的名称。 默认情况下,该表称为 "typeorm_metadata"。

  • cache - 启用实体结果缓存。您还可以在此处配置缓存类型和其他缓存选项。 在此处阅读有关缓存的更多信息。

    mysql / mariadb 数据源选项

  • url - 连接数据库的 URL。请注意,其他数据源选项将覆盖 URL 中设置的参数。

  • host - 数据库主机。

  • port - 数据库主机端口。默认的 MySQL 端口是 3306

  • username - 数据库用户名。

  • password - 数据库密码。

  • database - 数据库名称。

  • charset - 连接的字符集。在 MySQL 的 SQL 级别中称为 "collation"(例如 utf8_general_ci)。如果指定了 SQL 级别的字符集(例如 utf8mb4),则使用该字符集的默认 collation。(默认值:UTF8_GENERAL_CI)。

  • timezone - MySQL 服务器上配置的时区。用于将服务器的日期/时间值转换为 JavaScript 的 Date 对象,反之亦然。可以是 localZ 或形如 +HH:MM-HH:MM 的偏移量。(默认值:local

  • connectTimeout - 连接到 MySQL 服务器的初始连接建立超时时间(以毫秒为单位)。(默认值:10000

  • acquireTimeout - 连接到 MySQL 服务器的初始连接建立超时时间(以毫秒为单位)。与 connectTimeout 不同,它控制的是 TCP 连接的超时时间,而 connectTimeout 则不会。(默认值:10000

  • insecureAuth - 允许连接到要求使用旧(不安全)认证方法的 MySQL 实例。(默认值:false

  • supportBigNumbers - 当处理数据库中的大数(BIGINTDECIMAL 列)时,应启用此选项。(默认值:true

  • bigNumberStrings - 启用 supportBigNumbersbigNumberStrings 将始终将大数(BIGINTDECIMAL 列)返回为 JavaScript 的字符串对象。(默认值:true)。如果启用了 supportBigNumbers 但禁用了 bigNumberStrings,则只有当无法使用JavaScript 数字对象(即超出 [-2^53, +2^53] 范围)准确表示大数时,才将其作为字符串对象返回。否则,它们将作为数字对象返回。如果禁用了 supportBigNumbers,则忽略此选项。

  • dateStrings - 强制将日期类型(TIMESTAMPDATETIMEDATE)作为字符串返回,而不是转换为 JavaScript 的 Date 对象。可以是 true/false 或要保持为字符串的类型名称数组。(默认值:false

  • debug - 将协议细节打印到 stdout。可以是 true/false 或要打印的数据包类型名称数组。(默认值:false

  • trace - 生成错误的堆栈跟踪,包括库入口处的调用位置的长堆栈跟踪。大多数调用会稍微降低性能。(默认值:true

  • multipleStatements - 允许在单个查询中使用多个 MySQL 语句。请注意,这可能会增加 SQL 注入攻击的风险。(默认值:false

  • legacySpatialSupport - 使用在 MySQL 8 中已删除的空间函数,例如 GeomFromText 和 AsText。(默认值:true

  • flags - 用于连接的连接标志列表,可以覆盖默认连接标志。还可以将默认连接标志列入黑名单。更多信息,请参阅连接标志

  • ssl - 包含 SSL 参数的对象或包含 SSL 配置文件名称的字符串。详见SSL 选项

postgres / cockroachdb 数据源选项

  • url - 连接数据库的 URL。请注意,其他数据源选项将覆盖 URL 中设置的参数。

  • host - 数据库主机。

  • port - 数据库主机端口。默认的 Postgres 端口是 5432

  • username - 数据库用户名。

  • password - 数据库密码。

  • database - 数据库名称。

  • schema - 模式名称。默认值为 "public"。

  • connectTimeoutMS - 连接到 Postgres 服务器的初始连接建立超时时间(以毫秒为单位)。如果为 undefined 或设置为 0,则没有超时。默认为 undefined

  • ssl - 包含 SSL 参数的对象。详见TLS/SSL

  • uuidExtension - 生成 UUID 时要使用的 Postgres 扩展。默认为 uuid-ossp。如果 uuid-ossp 扩展不可用,可以更改为 pgcrypto

  • poolErrorHandler - 当底层池发出 'error' 事件时调用的函数。接受单个参数(错误实例),默认为使用 warn 级别记录日志。

  • logNotifications - 一个布尔值,确定是否应将 Postgres 服务器的通知消息通知事件包含在客户端的日志中,并使用 info 级别记录(默认值:false)。

  • installExtensions - 一个布尔值,控制是否自动安装必要的 Postgres 扩展(默认值:true)。

  • applicationName - 在统计信息和日志中可见的字符串,用于引用连接的应用程序(默认值:undefined)。

  • parseInt8 - 启用将 64 位整数(int8)解析为 JavaScript 整数。默认情况下,int8(bigint)值返回为字符串,以避免溢出。JavaScript不支持 64 位整数,JavaScript 中的最大安全整数是:Number.MAX_SAFE_INTEGER(+2^53)。启用 parseInt8 时请小心使用。

注意:如果底层驱动程序不支持该选项,则忽略此选项。

sqlite 数据源选项

  • database - 数据库路径。例如:"mydb.sql"。

better-sqlite3 数据源选项

  • database - 数据库路径。例如:"mydb.sql"

  • statementCacheSize - 缓存的 SQLite 语句大小,用于加速查询(默认为 100)。

  • prepareDatabase - 在 typeorm 中使用数据库之前要运行的函数。您可以在此处访问原始的 better-sqlite3 Database 对象。

  • nativeBinding - 本机附加组件(better_sqlite3.node)的相对或绝对路径。

capacitor 数据源选项

  • database - 数据库名称(capacitor-sqlite 将添加后缀 SQLite.db)。

  • driver - capacitor-sqlite 实例。例如,new SQLiteConnection(CapacitorSQLite)

  • mode - 设置数据库加密模式:"no-encryption" | "encryption" | "secret" | "newsecret"。

  • version - 数据库版本。

  • journalMode - SQLite 日志模式(可选)。

cordova 数据源选项

  • database - 数据库名称。

  • location - 数据库保存位置。有关选项,请参阅cordova-sqlite-storage

react-native 数据源选项

nativescript 数据源选项

  • database - 数据库名称。

mssql 数据源选项

  • url - 连接到数据库的 URL。请注意,其他数据源选项将覆盖 URL 中设置的参数。

  • host - 数据库主机。

  • port - 数据库主机端口。默认的 mssql 端口是 1433

  • username - 数据库用户名。

  • password - 数据库密码。

  • database - 数据库名称。

  • schema - 模式名称。默认为 "public"。

  • domain - 设置后,驱动程序将使用域登录连接到 SQL Server。

  • connectionTimeout - 连接超时时间(以毫秒为单位)(默认值:15000)。

  • requestTimeout - 请求超时时间(以毫秒为单位)(默认值:15000)。注意:msnodesqlv8 驱动程序不支持小于 1 秒的超时时间。

  • stream - 是否以流的形式返回记录集/行,而不是一次性作为回调参数返回所有记录(默认值:false)。您还可以为每个请求单独启用流式处理(request.stream = true)。如果计划处理大量行,则始终将其设置为 true

  • pool.max - 连接池中的最大连接数(默认值:10)。

  • pool.min - 连接池中的最小连接数(默认值:0)。

  • pool.maxWaitingClients - 允许排队等待的最大请求数,超过此数目的进一步获取请求将在事件循环的下一个周期中返回错误。

  • pool.testOnBorrow - 在将资源提供给客户端之前,是否应验证资源。要求指定 factory.validatefactory.validateAsync

  • pool.acquireTimeoutMillis - acquire 调用在超时之前等待资源的最大毫秒数。如果提供,必须是非零正整数。

  • pool.fifo - 如果为 true,则最旧的资源将首先分配。如果为 false,则最近释放的资源将首先分配。这实际上将连接池的行为从队列变为堆栈。布尔值(默认值:true)。

  • pool.priorityRange - 介于 1 和 x 之间的整数,如果设置了此值,借用者可以在队列中指定相对优先级,如果没有可用资源。请参阅示例(默认值:1)。

  • pool.evictionRunIntervalMillis - 运行驱逐检查的频率。默认值:0(不运行)。

  • pool.numTestsPerRun - 每次驱逐运行中要检查的资源数量。默认值:3

  • pool.softIdleTimeoutMillis - 在资源因空闲时间而被逐出之前,对象可以在连接池中空闲的最短时间。优先于 softIdleTimeoutMillis。默认值:-1(不逐出)。

  • pool.idleTimeoutMillis - 对象在连接池中空闲的最短时间,超过此时间将被逐出。超过此时间将被逐出。优先级高于 softIdleTimeoutMillis。默认值:30000

  • pool.errorHandler - 当底层连接池触发 'error' 事件时调用的函数。接受单个参数(错误实例),默认为使用 warn 级别记录日志。

  • options.fallbackToDefaultDb - 默认情况下,如果无法访问 options.database 请求的数据库,连接将失败并显示错误。但是,如果将 options.fallbackToDefaultDb 设置为 true,则将使用用户的默认数据库代替(默认值:false)。

mssql 数据源选项

  • options.instanceName - 要连接的实例名称。数据库服务器上必须运行 SQL Server Browser 服务,并且数据库服务器上的 UDP 端口 1434 必须可访问。与 port 互斥(没有默认值)。

  • options.enableAnsiNullDefault - 如果为 true,将在初始 SQL 中设置 SET ANSI_NULL_DFLT_ON ON。这意味着新列将默认为可为空。有关详细信息,请参阅T-SQL 文档(默认值:true)。

  • options.cancelTimeout - 在取消(中止)请求被视为失败之前的毫秒数(默认值:5000)。

  • options.packetSize - TDS 数据包的大小(根据与服务器的协商)。应为 2 的幂次。默认值:4096

  • options.useUTC - 一个布尔值,确定是否使用 UTC 时间还是本地时间传递时间值(默认值:false)。

  • options.abortTransactionOnError - 一个布尔值,确定是否在执行给定事务期间遇到任何错误时自动回滚事务。这在连接的初始 SQL 阶段设置 SET XACT_ABORT 的值。(文档

  • options.localAddress - 指示在连接到 SQL Server 时要使用的网络接口(IP 地址)的字符串。

  • options.useColumnNames - 一个布尔值,确定是否将行作为数组还是键值对集合返回(默认值:false)。

  • options.camelCaseColumns - 一个布尔值,控制返回的列名是否将第一个字母转换为小写(true)或保持不变(false)。如果提供了 columnNameReplacer,此值将被忽略(默认值:false)。

  • options.isolationLevel - 事务的默认隔离级别。隔离级别可从 require('tedious').ISOLATION_LEVEL 获取。

    • READ_UNCOMMITTED

    • READ_COMMITTED

    • REPEATABLE_READ

    • SERIALIZABLE

    • SNAPSHOT

      (默认值:READ_COMMITTED

  • options.connectionIsolationLevel - 新连接的默认隔离级别。所有的非事务查询都将使用此设置。隔离级别可从 require('tedious').ISOLATION_LEVEL 获取。

    • READ_UNCOMMITTED

    • READ_COMMITTED

    • REPEATABLE_READ

    • SERIALIZABLE

    • SNAPSHOT

      (默认值:READ_COMMITTED

  • options.readOnlyIntent - 一个布尔值,确定连接是否会请求 SQL Server 可用性组中的只读访问权限。有关详细信息,请参阅此处(默认值:false)。

  • options.encrypt - 一个布尔值,确定连接是否加密。如果您在 Windows Azure 上,则设置为 true。(默认值:true

  • options.cryptoCredentialsDetails - 当使用加密时,可以提供一个对象作为调用 tls.createSecurePair 的第一个参数。(默认值:{}

  • options.rowCollectionOnDone - 一个布尔值,当为 true 时,在请求的 done* 事件中暴露接收到的行。请参阅 done、doneInProcdoneProc。(默认值:false

注意:如果接收到大量行,则启用此选项可能导致过多的内存使用。

  • options.rowCollectionOnRequestCompletion - 一个布尔值,当为 true 时,在请求的完成回调中暴露接收到的行。请参阅 new Request。(默认值:false

注意:如果接收到大量行,则启用此选项可能导致过多的内存使用。

  • options.tdsVersion - 要使用的 TDS 版本。如果服务器不支持指定的版本,则会使用协商的版本。版本可从 require('tedious').TDS_VERSION 获取。

    • 7_1

    • 7_2

    • 7_3_A

    • 7_3_B

    • 7_4

      (默认值:7_4

  • options.appName - 用于在 SQL Server 的分析、日志记录或跟踪工具中标识特定应用程序的应用程序名称(默认值:node-mssql)。

  • options.debug.packet - 一个布尔值,控制是否使用文本描述数据包详细信息来触发 debug 事件(默认值:false)。

  • options.debug.data - 一个布尔值,控制是否使用文本描述数据详细信息来触发 debug 事件(默认值:false)。

  • options.debug.payload - 一个布尔值,控制是否使用文本描述数据包载荷详细信息来触发 debug 事件(默认值:false)。

  • options.debug.token - 一个布尔值,控制是否使用文本描述令牌流令牌来触发 debug 事件(默认值:false)。

mongodb 数据源选项

  • url - 执行连接的连接 URL。请注意,其他数据源选项将覆盖 URL 中设置的参数。

  • host - 数据库主机。

  • port - 数据库主机端口。默认的 MongoDB 端口是 27017

  • username - 数据库用户名(替代 auth.user)。

  • password - 数据库密码(替代 auth.password)。

  • database - 数据库名称。

  • poolSize - 设置每个单独的服务器或代理连接的最大池大小。

  • ssl - 使用 SSL 连接(需要具有 SSL 支持的 mongod 服务器)。默认值:false

  • sslValidate - 验证 mongod 服务器的证书是否与 CA 一致(需要具有 SSL 支持的 mongod 服务器,版本为 2.4 或更高)。默认值:true

  • sslCA - 有效证书的数组,可以是 Buffer 或字符串(需要具有 SSL 支持的 mongod 服务器,版本为 2.4 或更高)。

  • sslCert - 包含要提供的证书的字符串或缓冲区(需要具有 SSL 支持的 mongod 服务器,版本为 2.4 或更高)。

  • sslKey - 包含要提供的证书私钥的字符串或缓冲区(需要具有 SSL 支持的 mongod 服务器,版本为 2.4 或更高)。

  • sslPass - 包含证书密码的字符串或缓冲区(需要具有 SSL 支持的 mongod 服务器,版本为 2.4 或更高)。

  • autoReconnect - 发生错误时重新连接。默认值:true

  • noDelay - TCP Socket NoDelay 选项。默认值:true

  • keepAlive - 在 TCP 套接字上启动 keepAlive 之前等待的毫秒数。默认值:30000

  • connectTimeoutMS - TCP 连接超时设置。默认值:30000

  • socketTimeoutMS - TCP 套接字超时设置。默认值:360000

  • reconnectTries - 服务器尝试重新连接的次数。默认值:30

  • reconnectInterval - 服务器在重试之间等待的毫秒数。默认值:1000

  • ha - 打开高可用性监控。默认值:true

  • haInterval - 每个复制集状态检查之间的时间。默认值:10000,5000

  • replicaSet - 要连接的复制集的名称。

  • acceptableLatencyMS - 在使用最近(最低 ping 值 + 时延范围)时设置要选择的服务器范围(例如,1 到 (1 + 15) ms 范围)。默认值:15

  • secondaryAcceptableLatencyMS - 在使用最近(最低 ping 值 + 时延fence,例如,1 到 (1 + 15) ms 范围)时设置要选择的服务器范围。默认值:15

  • connectWithNoPrimary - 设置是否即使没有可用的主服务器也应连接。默认值:false

  • authSource - 如果数据库身份验证依赖于其他数据库名称。

  • w - 写入关注。

  • wtimeout - 写入关注超时值。

  • j - 指定日志写入关注。默认值:false

  • forceServerObjectId - 强制服务器分配 _id 值,而不是驱动程序。默认值:false

  • serializeFunctions - 在任何对象上序列化函数。默认值:false

  • ignoreUndefined - 指定 BSON 序列化器是否应忽略未定义的字段。默认值:false

  • raw - 将文档结果作为原始 BSON 缓冲区返回。默认值:false

  • promoteLongs - 如果 Long 值适合 53 位分辨率,则将其提升为数字。默认值:true

  • promoteBuffers - 将 Binary BSON 值提升为原生的 Node 缓冲区。默认值:false

  • promoteValues - 将 BSON 值尽可能地提升为原生类型,设置为 false 只接收包装类型。默认值:true

  • domainsEnabled - 启用将回调封装在当前域中,如果禁用,可以避免性能损失。默认值:false

  • bufferMaxEntries - 在放弃获取工作连接之前,设置驱动程序将缓冲的操作数的上限,默认值为 -1,表示无限制。

  • readPreference - 首选读取偏好。

    • ReadPreference.PRIMARY
    • ReadPreference.PRIMARY_PREFERRED
    • ReadPreference.SECONDARY
    • ReadPreference.SECONDARY_PREFERRED
    • ReadPreference.NEAREST
  • pkFactory - 用于生成自定义 _id 键的主键工厂对象。

  • promiseLibrary - 应用程序希望使用的 Promise 库类,例如 Bluebird,必须与 ES6 兼容。

  • readConcern - 指定集合的读取关注(仅支持 MongoDB 3.2 或更高版本)。

  • maxStalenessSeconds - 指定辅助节点读取的最大过时时间(最小值为 90 秒)。

  • appname - 创建此 MongoClient 实例的应用程序的名称。MongoDB 3.4 及更高版本将在建立每个连接时在服务器日志中打印此值。它还记录在慢查询日志和 profile 集合中。

  • loggerLevel - 指定驱动程序日志记录器使用的日志级别(error/warn/info/debug)。

  • logger - 指定自定义的日志记录机制,可用于使用应用程序级别的日志记录器进行日志记录。

  • authMechanism - 设置 MongoDB 用于认证连接的认证机制。

  • directConnection - 指定是否强制将所有操作分派到指定的主机。

sql.js 数据源选项

  • database:要导入的原始 UInt8Array 数据库。

  • sqlJsConfig:可选的 sql.js 初始化配置。

  • autoSave:是否禁用自动保存。如果设置为 true,当发生更改并且指定了 location 时,数据库将保存到给定的文件位置(Node.js)或 LocalStorage 元素(浏览器)。否则,可以使用 autoSaveCallback

  • autoSaveCallback:当对数据库进行更改并且启用了 autoSave 时调用的函数。该函数接收一个表示数据库的 UInt8Array

  • location:要加载和保存数据库的文件位置。

  • useLocalForage:启用使用 localforage 库(https://github.com/localForage/localForage)从 indexedDB 异步保存和加载数据库,而不是在浏览器环境中使用同步本地存储方法。需要将 localforage node 模块添加到您的项目中,并在页面中导入 localforage.js。

expo 数据源选项

  • database - 数据库名称。例如,"mydb"。
  • driver - Expo SQLite 模块。例如,require('expo-sqlite')

数据源选项示例

以下是用于 mysql 的数据源选项的小例子:

{
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
logging: true,
synchronize: true,
entities: [
"entity/*.js"
],
subscribers: [
"subscriber/*.js"
],
entitySchemas: [
"schema/*.json"
],
migrations: [
"migration/*.js"
]
}