Javascript 如何在满足setVersion和OnupGrade需求的同时,同时获得IndexedDB数据库的新旧版本?

Javascript 如何在满足setVersion和OnupGrade需求的同时,同时获得IndexedDB数据库的新旧版本?,javascript,indexeddb,Javascript,Indexeddb,已经有这样的问题和答案了 但我看不出该代码如何满足setVersion和onupgrade方法的增量版本。类似于下面的伪代码 如果(旧版本

已经有这样的问题和答案了

但我看不出该代码如何满足setVersion和onupgrade方法的增量版本。类似于下面的伪代码


如果(旧版本<1)
createObjectStore
如果(旧版本<2)
创建新索引
等等等等等等。。。

也就是说,我知道如何为setVersion方法获取旧版本(检查db.serVersion是否存在,然后查询db.version的值),但我不知道如何为更新的onUpgradeNeeded方法获取旧版本

这两个方面都不明显:-(


THanx.

有几种方法。首先,数据库的新版本是打开数据库时提供的版本号

var version = 2;
var request = indexeddb.open("name", version)
因此,如果您使用变量,您可以这样做。但是onupgradeRequired事件也提供eventdata

request.onupgradeneeded = function (e) {
     var transaction = request.result;
     var oldVersion = e.oldVersion;
     var newVersion = e.newVersion;
};

正如您看到的,eventdata作为参数传递给OnUpgradeRequired回调

Thanx,我将在标记为正确之前检查它。我来自强类型背景,因此浏览API文档时,我感到非常痛苦(与自动完成相比)。我知道这种感觉:)。在RL,我是一名.NET开发人员,所以我知道其中的痛苦。但是JS也有它的优点,例如它非常可扩展。如果您需要更多关于API的信息,我已经写了一些关于API的博客,关于扩展性是一种逃避,因为没有为您的客户和供应商协商足够的接口和挂钩,而是绕过它们:-P标记您的答案为正确,并将访问您的站点。以异步方式从多个对象存储加载数据时遇到问题,需要按程序执行:-(你试过使用yield关键字吗?另一种轻松处理异步调用的方法是使用promisesThanx提供建议。显然我对这些策略不太熟悉……无法让事务保持打开状态,从而泄漏它们?我猜当生成器是GC时,其他一切都会发生。尽管我不太明白你是如何理解的。)从游标请求到生成器,将onsuccess转换为promise。似乎Promises只是将样板文件转换为promise对象,所以,如果您一次又一次地使用相同的promise,这不是真的增加了价值吗?我想这一切真的值得再问一个堆栈问题。。。