gpt4 book ai didi

javascript - 如何在 IndexedDB 中创建多个对象存储

转载 作者:数据小太阳 更新时间:2023-10-29 04:25:11 24 4
gpt4 key购买 nike

不知道我说的对不对。但据我所知,我无法手动创建版本更改交易。调用它的唯一方法是在打开索引数据库连接时更改版本号。如果这是正确的,在 example1 和 example2 中永远不会创建新的 objectStore?

例子1

function createObjectStore(name){
var request2 = indexedDB.open("existingDB");
request2.onupgradeneeded = function() {
var db = request2.result;
var store = db.createObjectStore(name);
};
}

例子2

function createObjectStore(name){
var request2 = indexedDB.open("existingDB");
request2.onsuccess = function() {
var db = request2.result;
var store = db.createObjectStore(name);
};
}

示例 3 - 这应该有效:

function createObjectStore(name){
var request2 = indexedDB.open("existingDB", 2);
request2.onupgradeneeded = function() {
var db = request2.result;
var store = db.createObjectStore(name);
};
}

如果我想在一个数据库中创建多个objectStore,我如何在打开数据库之前获取/获取数据库版本?那么有没有办法自动化这个获取数据库版本号的过程呢??

除了使用 onupgradeneeded 事件处理程序之外,还有其他方法可以创建 objectStore。

请帮忙。非常感谢。

编辑:

这是我遇到的同样问题: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-html5/0rfvwVdSlAs

最佳答案

您需要打开数据库以检查其当前版本,然后使用 version + 1 再次打开它以触发升级。

示例代码如下:

function CreateObjectStore(dbName, storeName) {
var request = indexedDB.open(dbName);
request.onsuccess = function (e){
var database = e.target.result;
var version = parseInt(database.version);
database.close();
var secondRequest = indexedDB.open(dbName, version+1);
secondRequest.onupgradeneeded = function (e) {
var database = e.target.result;
var objectStore = database.createObjectStore(storeName, {
keyPath: 'id'
});
};
secondRequest.onsuccess = function (e) {
e.target.result.close();
}
}
}

关于javascript - 如何在 IndexedDB 中创建多个对象存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20097662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com