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

标签 javascript indexeddb

不知道我说的对不对。但据我所知,我无法手动创建版本更改交易。调用它的唯一方法是在打开索引数据库连接时更改版本号。如果这是正确的,在 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/

相关文章:

javascript - 使用indexedDb高效存储和检索时间序列数据

javascript - IndexedDB “and” 和 “or” 查询

javascript - indexedDB正确用法

javascript - 褪色最新新闻自动收报机

javascript - 如何在jquery中使用javascript变量?

javascript - 谷歌浏览器和(缓存或内存泄漏)

javascript - indexedDB读取不一致

javascript - jQuery 空输入检查功能未按预期工作

javascript - 组合一些数组项

windows-store-apps - Windows 应用商店应用提交的 IndexedDB 问题