将indexeddb用作具有多个版本的版本数据库

问题描述 投票:0回答:1

场景:

您在2018年创建了一个Excel工作表。它在工作表中有查找表。我们将此数据库称为1版。用户将excel提交为表格ID 1。现在,在2019年,您将更新查找表并发布新版本的excel。现在是数据库版本2。用户以-ID 2的形式提交最新的2019年excel。

现在尝试在Web应用程序中执行此操作。我们使用Rule.JS,Formula.JS和JS Promise以及索引数据库来模仿excel之类的函数。我们正在使用indexeddb来避免对数据库的多次调用以进行查找。因此,只有STATIC数据存储在indexeddb中。所有这些都可以在使用最新数据时使用。我的设计挑战是针对可能需要使用数据库查找表的旧版本的旧表单执行此操作。

当您在浏览器中打开表格ID 1时-Db ver 1应该被加载。

[当您在浏览器中打开表单ID 2时-应当加载Db ver 2。

问题:

  1. 可以使用indexedDB.open(dbname,ver)在页面加载时使用indexeddb加载特定版本吗?
  2. 可以在页面加载时将indexeddb版本降级吗?
  3. 我们能否在页面加载时将版本号作为JS的参数传递?

问题在于,每个表单都需要根据提交时间来提取特定版本的Db。使用indexedDb,我知道它是一个前瞻性数据库。因此,我们只能升级到新版本,而不能降级。有没有办法用indexeddb做到这一点,或者我叫错了树吗?

我想出的一个解决方案是在SQL中创建两个表。 1个实际表,1个存档表。每次更新数据时,我们都会将旧数据移动到版本号为#的存档表中。如果表单正在寻找特定版本,则GetData(lookupvariable,ver#)可以搜索任一表以查找该特定版本的值。这样,我最终将必须将所有内容都转换为AJAX调用,并取消使用indexeddb。

database-design responsive indexeddb
1个回答
0
投票

无论版本如何,IDB数据存储foo都将具有相同的数据。因此,如果您在v1中添加数据,然后将其更改为v2,则数据不会消失。 IDB使用版本控制作为一种更改结构的方法。您只能在版本更改时修改对象存储。

所以我想说是-您在这里树错了树,使用版本控制对数据进行分区。我认为您对存档表的解决方案实际上更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.