[Bug] InMemoryDriver 在 MSW 浏览器模式下未持久化到 localStorage
问题描述:
在 objectstack-ai/objectui 仓库内,driver-memory 在 MSW 模式下运行于浏览器时,数据"应该"自动持久化到 localStorage,但实际情况是每次刷新页面数据丢失。
调试发现,浏览器 localStorage 中没有 objectstack:memory-db 键,说明 @objectstack/driver-memory 的持久化适配器未生效。
根因分析:
InMemoryDriver 的 localStorage 持久化需要在构造后显式执行 driver.connect() 才会初始化 initPersistence() 并从 localStorage 恢复历史数据。
- 当前 MSW mock 代码中,
createKernel.ts 没有调用 driver.connect(),并且种子数据直接写入 db,绕过了本地持久化链路。
复现路径:
- 访问 https://demo.objectui.org/apps/crm_app/account/record/6
- 在浏览器刷新页面后,所有数据全部丢失,localStorage 无
objectstack:memory-db 键
预期行为:
- 数据应持久化到 localStorage,在页面刷新后不会丢失。
建议修复方案:
- 在
apps/console/src/mocks/createKernel.ts 的 kernel/driver 初始化后,显式调用 await driver.connect(),确保持久化适配器生效;
- 在 seed 数据写入(如 syncDriverIds/patchDriverCreate)后,额外调用
driver.flush() 或 persistenceAdapter.save(db),保证本地数据落盘;
关键参考实现(spec 仓库):
相关修复 Task
如需 cross-repo issue(spec 仓库),请补充 driver/persistence 相关通用文档/注释。
[Bug]
InMemoryDriver在 MSW 浏览器模式下未持久化到 localStorage问题描述:
在
objectstack-ai/objectui仓库内,driver-memory 在 MSW 模式下运行于浏览器时,数据"应该"自动持久化到 localStorage,但实际情况是每次刷新页面数据丢失。调试发现,浏览器 localStorage 中没有
objectstack:memory-db键,说明@objectstack/driver-memory的持久化适配器未生效。根因分析:
InMemoryDriver的 localStorage 持久化需要在构造后显式执行driver.connect()才会初始化initPersistence()并从 localStorage 恢复历史数据。createKernel.ts没有调用 driver.connect(),并且种子数据直接写入 db,绕过了本地持久化链路。复现路径:
objectstack:memory-db键预期行为:
建议修复方案:
apps/console/src/mocks/createKernel.ts的 kernel/driver 初始化后,显式调用await driver.connect(),确保持久化适配器生效;driver.flush()或persistenceAdapter.save(db),保证本地数据落盘;关键参考实现(spec 仓库):
InMemoryDriver持久化逻辑LocalStoragePersistenceAdapter相关修复 Task
createKernel.ts显式调用await driver.connect()driver.flush()或直接 save dbobjectstack:memory-db且刷新的数据不会丢失如需 cross-repo issue(spec 仓库),请补充 driver/persistence 相关通用文档/注释。