IRxDBAdapter
Defined in: packages/rxdb/src/rxdb-adapter.ts:214
RxDB 数据库适配器接口
Extended by
Properties
name
readonly name: string;
Defined in: packages/rxdb/src/rxdb-adapter.ts:216
适配器名,与 RxDB.adapter() 登记时用的键同值;错误消息与 getAdapter() 都按它认人
Methods
connect()
connect(): Promise<IRxDBAdapter>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:227
建立连接并把系统表补到当前水位。
Returns
Promise<IRxDBAdapter>
自身,便于链式使用
Remarks
建表与系统迁移都在这里发生(见 isCurrentRxDBSystemVersion),因此它可能很慢,
也可能因为库比本进程新而抛 UnsupportedRxDBSystemVersionError。
disconnect()
disconnect(): Promise<void>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:236
断开连接并释放底层句柄。
Returns
Promise<void>
Remarks
与 RxDB.destroy() 不同,断开是可逆的:同一个适配器实例之后还能再 connect()。
实现须幂等——未连接时调用是空操作而不是抛错。
getRepository()
getRepository<T, RT>(EntityType): RT;
Defined in: packages/rxdb/src/rxdb-adapter.ts:253
取该实体在本适配器上的仓储实例。
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends EntityType | - |
RT extends IRepository<T> | IRepository<T> |
Parameters
| Parameter | Type |
|---|---|
EntityType | T |
Returns
RT
Remarks
返回的是适配器轴的仓储(见 AdapterRepositoryConstructor),
与用户通常拿到的门面仓储 RxDB.getRepository() 不是同一个对象。
isTableExisted()
isTableExisted(EntityType): Promise<boolean>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:280
该实体对应的表在库里是否已存在。
Parameters
| Parameter | Type |
|---|---|
EntityType | EntityType |
Returns
Promise<boolean>
Remarks
问的是物理表,不是元数据里有没有登记这个实体。
mutations()
mutations<T>(options): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:272
批量修改实体(创建/更新/删除)
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type |
|---|---|
options | RxDBMutationsMap<T> |
Returns
Promise<InstanceType<T>[]>
rawQuery()?
optional rawQuery(sql, params?): Promise<RawQueryResult>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:294
执行原始 SQL 查询(条件 UPDATE 等绕过 ORM 的场景)
Parameters
| Parameter | Type |
|---|---|
sql | string |
params? | unknown[] |
Returns
Promise<RawQueryResult>
Remarks
可选方法,这一点有后果:核心包没法像四个写原语那样替适配器包住它,
于是启用提交能力的库上,raw 写的门禁只能由各适配器自己的实现调用
gateRawWrite(sql, ctx, …) 来完成(ctx 取自
RxDBAdapterLocalBase.workingTreeRawWriteContext)。漏掉那一句
等于这条路径上的写全部绕过变更捕获。
走这里的写不经过实体 Proxy,因此也不会产生实体事件,缓存里的实例不会自动刷新。
removeMany()
removeMany<T>(entities): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:267
批量删除实体。
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
Promise<InstanceType<T>[]>
被删除的实体
saveMany()
saveMany<T>(entities): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:260
批量写入实体(不存在则插入,存在则更新)。
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
Promise<InstanceType<T>[]>
落库后的实体;主键、数据库端默认值等由库回填的字段在这里才有值
version()
version(): Promise<string>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:244
底层数据库引擎的版本号(如 SQLite 的 3.45.0),用于诊断与能力判断。
Returns
Promise<string>
Remarks
与系统表水位号(RXDB_SYSTEM_SCHEMA_VERSION)无关,那是 RxDB 自己的号。