跳到主要内容

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 ParameterDefault type
T extends EntityType-
RT extends IRepository<T>IRepository<T>

Parameters​

ParameterType
EntityTypeT

Returns​

RT

Remarks​

返回的是适配器轴的仓储(见 AdapterRepositoryConstructor), 与用户通常拿到的门面仓储 RxDB.getRepository() 不是同一个对象。


isTableExisted()​

isTableExisted(EntityType): Promise<boolean>;

Defined in: packages/rxdb/src/rxdb-adapter.ts:280

该实体对应的表在库里是否已存在。

Parameters​

ParameterType
EntityTypeEntityType

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​

ParameterType
optionsRxDBMutationsMap<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​

ParameterType
sqlstring
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​

ParameterType
entitiesInstanceType<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​

ParameterType
entitiesInstanceType<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 自己的号。