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
| Parameter | Type |
|---|---|
body | unknown |
ctx | FetchMetadataContext |
Returns
request()
request(ctx): HttpRequestSpec;
Defined in: packages/rxdb-adapter-http/src/http.interface.ts:118
产出本页请求描述。纯函数,不碰网络。
Parameters
| Parameter | Type |
|---|---|
ctx | FetchMetadataContext |
Returns
Remarks
必须把翻页位置编码进 URL 或 body:offset 形态编 ctx.offset,token 形态编 ctx.pageToken。
适配器只按返回的行数与 token 决定要不要继续翻,无从检查请求里带没带位置——漏掉的表现是
远端每页都回第一页,翻页一直不推进,直到 maxPages 触顶抛错,而错误信息指向的是
页数上限,不是漏掉的那个参数。
开了 conditionalRequests 会让这个症状更难认:请求指纹取自实际发出的
method + URL + body,位置没进去就意味着所有页共用一个指纹,第 2 页起全是 304,
重放的还是第一页。