【发布时间】:2020-02-25 17:52:41
【问题描述】:
场景:
您在 2018 年创建了一个 Excel 工作表。它在工作表中具有查找表。让我们将此数据库称为 1。用户将 excel 作为表单 ID 1 提交。 现在在 2019 年,您更新了查找表并发布了新版本的 Excel。现在是 DB 版本 2。用户提交最新的 2019 excel 作为表单 -ID 2。
现在尝试在 Web 应用程序中执行此操作。我们使用 Rule.JS、Formula.JS 和 JS Promise 以及索引数据库来模仿类似 Excel 的函数。我们使用 indexeddb 来避免多次调用 db 进行查找。所以只有 STATIC 数据存储在 indexeddb 中。当使用最新数据时,所有这些都有效。我的设计挑战是为可能需要使用旧版本的数据库查找表的旧表单执行此操作。
当您在浏览器中打开 Form Id 1 时,应加载 Db ver 1。
当您在浏览器中打开 Form Id 2 时 - 应加载 Db ver 2。
问题:
- indexeddb 能否用于使用 indexedDB.open(dbname,ver) 在页面加载时加载特定版本?
- 可以在页面加载时降级 indexeddb 版本吗?
- 我们可以在页面加载时将版本号作为参数从 JS 传递吗?
问题是每个表单都需要根据提交时间拉取特定版本的 Db。使用 indexedDb,我知道它是一个前瞻性的数据库。所以我们只能升级到较新的版本,不能降级。有没有办法用 indexeddb 做到这一点,还是我在叫错树?
我想出的一个解决方案是在 SQL 中创建两个表。 1 个实际表,1 个存档表。每次更新数据时,我们都会将旧数据移动到版本号为 # 的存档表中。如果表单正在查找特定版本,则 GetData(lookupvariable, ver#) 可以搜索任一表以查找该特定版本的值。这样,我最终将不得不将所有内容都转换为 AJAX 调用并取消 indexeddb。
【问题讨论】:
标签: database-design responsive indexeddb