跳到主要内容

FetchMetadataHandler

Defined in: packages/rxdb-adapter-http/src/http.interface.ts:104

fetchMetadata 的协议 mapping。

Remarks​

offset 形态依赖一条服务端保证:返回少于 limit 条即最后一页,不得因限流、超时或 服务端 max-rows 提前返回短页;跨页排序稳定;一次查询内快照一致。 任一条不满足的服务端 MUST 用 token 形态——适配器无法在客户端侧检测短页截断。

Methods​

parse()​

parse(body, ctx): FetchMetadataResult;

Defined in: packages/rxdb-adapter-http/src/http.interface.ts:120

解析已 JSON 解码的响应体。抛错 = 本次 fetchMetadata 失败,不吞不重试

Parameters​

ParameterType
bodyunknown
ctxFetchMetadataContext

Returns​

FetchMetadataResult


request()​

request(ctx): HttpRequestSpec;

Defined in: packages/rxdb-adapter-http/src/http.interface.ts:118

产出本页请求描述。纯函数,不碰网络。

Parameters​

ParameterType
ctxFetchMetadataContext

Returns​

HttpRequestSpec

Remarks​

必须把翻页位置编码进 URL 或 body:offset 形态编 ctx.offset,token 形态编 ctx.pageToken。 适配器只按返回的行数与 token 决定要不要继续翻,无从检查请求里带没带位置——漏掉的表现是 远端每页都回第一页,翻页一直不推进,直到 maxPages 触顶抛错,而错误信息指向的是 页数上限,不是漏掉的那个参数。

开了 conditionalRequests 会让这个症状更难认:请求指纹取自实际发出的 method + URL + body,位置没进去就意味着所有页共用一个指纹,第 2 页起全是 304, 重放的还是第一页。