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 等策略照常要求库级两侧适配器与对应插件。