Skip to content

Latest commit

 

History

History
68 lines (41 loc) · 3.3 KB

37.md

File metadata and controls

68 lines (41 loc) · 3.3 KB

37 · 检查 IndexedDB

由 pnpm docs:lessons 生成。教学脚本在 src/data/network-state.json,合同补充在 scripts/generate-network-state.mjs。本页含教师参考答案。

目标与原理

认识仓库、键和事务,会检查记录。先修按 完整目录 的章节关系;基础操作、原理关系随本课讲解。

IndexedDB 的对象仓库按键读写,单个 request 成功也不等于整个事务提交。

先建立边界

先确认数据库、版本、object store 和 keyPath

再核对证据

同一记录写入键与读取键必须一致

最后验证结果

transaction complete 才证明提交;abort 会回滚;DevTools 记录视图要手动刷新

交互演示

观察记录写入、读取和更新。模型不改变真实浏览器设置,不计为实战完成。

  1. 先预测一个条件变化的结果。
  2. 只改变一个条件,比较输入与输出。
  3. 将模型中的关系对应到真实 DevTools。

真实商城合同

症状:收藏草稿写过了,刷新读取还是找不到。

正常结果:当前 SKU 的 favorite/price 记录事务提交且可读,刷新仍存在。

真实机制:独立数据库、favorites keyPath=sku;错误键与真实 transaction.abort。

  1. 从本课准备并打开独立商城;先打开 DevTools,再运行故障。
  2. Application → IndexedDB 选本会话数据库,展开 favorites,查看 keyPath=sku。
  3. 手动 Refresh 数据,比较实际键、字段和读取条件;不能靠界面旧值断言提交。
  4. 用修复对照完成事务并重新读取,再刷新页面检查;清理仅删除本会话数据库。
  5. 先保存证据,再应用针对性的对照;错误对照不会通过页面检查。
  6. 回到教程选择真实证据,完成独立挑战后写下排查与恢复步骤。

独立挑战与参考答案

找到键、字段或读取条件错误。新会话改变输入与故障配置,可能再次抽到同一类型;按实际证据判断。

配置 原因 证据 修复/验证
配置1 写入键与读取的 SKU 不一致 favorites 中键是 OLD-SKU,读取使用当前 SKU 统一写读键后重新读取
配置2 事务被中止,request 成功不代表提交 request 后出现 abort,仓库没有提交记录 等待事务 complete,处理 abort 再读取
干扰项 只凭界面颜色判断 没有对应请求或存储证据 同时改变全部条件且不复测

分级提示

  1. 先区分实际请求、浏览器策略、存储与界面处理,记录第一次偏离的环节。
  2. Application → IndexedDB 选本会话数据库,展开 favorites,查看 keyPath=sku。
  3. 比较两个候选解释:写入键与读取的 SKU 不一致;事务被中止,request 成功不代表提交。保持其他输入一致再验证。

边界与恢复

request success 不等于 transaction complete;DevTools 视图需手动 Refresh。清理只删自己的数据库。

清理与会话约定见 共同合同。请在复盘写下条件、观察对象、实际值、根因、最小修改与恢复设置;将 HTTP 缓存、Cache Storage、内存状态分开。

官方参考。实测范围见 验收记录。