如何同时支持IndexedDB数据库的旧版本和新版本,同时满足setVersion和onUpgradeNeeded?

时间:2012-09-21 12:55:38

标签: javascript indexeddb

已经存在类似的问题和答案

Add Index to Pre-Existing ObjectStore In IndexedDB Using Javascript

但我无法看到该代码如何满足setVersion和onUpgradeNeeded方法的增量版本。像下面的pseudoCode ..


if (oldVersion < 1)
createObjectStore
if (oldVersion < 2)
createNewIndex
etc etc etc...

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

http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#request-api开始并不明显: - (

THANX。

1 个答案:

答案 0 :(得分:2)

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

var version = 2;
var request = indexeddb.open("name", version)

所以如果你使用变量,你可以这样做。但是onupgradeneeded事件也提供了eventdata

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

如您所见,eventdata作为参数传递给onupgradeneeded回调