跳到主要内容

RxDBOptions

Defined in: packages/rxdb/src/rxdb.interface.ts:83

RxDB 顶层配置

RxDB 构造器消费的形状。dbName + entities 是初始化前置条件, 其余字段缺省时走合理兜底:没有 migrations 等同于空数组; sync 必填是因为不同步的 RxDB 几乎无业务价值。

Properties​

context?​

optional context?: RxDBContext;

Defined in: packages/rxdb/src/rxdb.interface.ts:150

环境上下文

userId 用来填 createdBy / updatedBy 审计字段,clientId 用来在同步时认出本端发出的变更。 运行时可通过 RxDB.context setter 整体替换(clientId 会被合并保留)。


dbName​

dbName: string;

Defined in: packages/rxdb/src/rxdb.interface.ts:91

数据库名称

Remarks​

同一物理 SQLite 文件的命名空间。RxDB 会自动追加 @<RXDB_DB_NAME_SUFFIX> 后缀以避免版本演进时与旧库冲突 —— 业务方传进来的就是用户可读的"逻辑名"。


entities​

entities: EntityType[];

Defined in: packages/rxdb/src/rxdb.interface.ts:100

所有实体

列表里同一类型只能出现一次;装饰器会去重但不保证顺序。 多对多中间表(见 ./entity/many-to-many-entity.ts)不需要出现在这里, SchemaManager.init() 会在解析关系时自动追加。


migrations?​

optional migrations?: MigrationType[];

Defined in: packages/rxdb/src/rxdb.interface.ts:117

升级脚本

按 name.localeCompare 顺序执行,已存在的会被跳过; 与 RxDBMigration 表的记录做幂等控制。


multiInstance?​

optional multiInstance?: boolean;

Defined in: packages/rxdb/src/rxdb.interface.ts:109

是否启用多个 JavaScript realm 之间的数据库事件协调。

Remarks​

默认 true,通过 BroadcastChannel 与 Web Locks 协调多个浏览器 tab。 微信小程序逻辑层只有单 realm 且没有这些 Web API,必须显式设为 false。


sync​

sync: SyncOptions;

Defined in: packages/rxdb/src/rxdb.interface.ts:124

默认的同步配置

各仓库的 SyncType 会从这里继承,未声明的字段落到全局兜底。


syncOverrides?​

optional syncOverrides?: readonly EntitySyncOverride[];

Defined in: packages/rxdb/src/rxdb.interface.ts:142

本实例对指定实体的同步配置覆盖

Remarks​

生效优先级:本条覆盖 > 实体装饰器的 sync > 上面的默认 sync。每条覆盖提供完整的 SyncOptions,选中后整体替换,不做字段合并。覆盖只属于本实例,不修改实体元数据, 同一实体类可以在不同实例里走不同策略(如浏览器 QueryCache、服务端纯本地)。

构造时校验并快照:目标必须是 entities 里的业务实体(系统表、自动生成的中间实体、 未注册实体都拒绝),同一实体不能出现两次,sync 必须满足所选 type 的必填项(Full / Filter / QueryCache 两侧都要,Filter 要 remote.filter 函数);违规抛 RxDBSyncOverrideError。之后改动传入的对象不影响本实例。

覆盖不创建适配器、不安装插件:适配器仍只从默认 sync 注册,覆盖里某侧的适配器名 必须与默认 sync 同侧一致;覆盖里的 QueryCache 等策略照常要求库级两侧适配器与对应插件。