Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法创建第二个objectStore IndexedDB_Javascript_Jquery_Indexeddb - Fatal编程技术网

Javascript 无法创建第二个objectStore IndexedDB

Javascript 无法创建第二个objectStore IndexedDB,javascript,jquery,indexeddb,Javascript,Jquery,Indexeddb,我基本上有以下代码来生成带有一个objectStore的新数据库: DB.open_or_create({table: 'photos', key: 'url'}); 以及主要代码: var DB = { open_or_create : function(p){ var openRequest = indexedDB.open("new_app",1); openRequest.onupgradeneeded = function(e) { var this

我基本上有以下代码来生成带有一个objectStore的新数据库:

DB.open_or_create({table: 'photos', key: 'url'});
以及主要代码:

var DB = {
 open_or_create : function(p){
    var openRequest = indexedDB.open("new_app",1);
    openRequest.onupgradeneeded = function(e) {
        var thisDB = e.target.result;
        if(!thisDB.objectStoreNames.contains(p.table)) {
            thisDB.createObjectStore(p.table,{ keyPath: p.key });
        }
    }
    openRequest.onsuccess = function(e) {DBTABLES = e.target.result}
    openRequest.onerror = function(e) {console.log(e)}
 }
然后,我尝试使用以下命令添加第二个objectStore:

  DB.open_or_create2({table: 'users',key: 'id'});
并且基本上相同的代码只包含另一个数据库版本号:

open_or_create2 : function(p){
    var openRequest = indexedDB.open("new_app",2);
    openRequest.onupgradeneeded = function(e) {
        var thisDB = e.target.result;
        if(!thisDB.objectStoreNames.contains(p.table)) {
            if(p.key){
                thisDB.createObjectStore(p.table,{ keyPath: p.key });
            }else{
                thisDB.createObjectStore(p.table)
            }
        }
    }
    openRequest.onsuccess = function(e) {DBTABLES = e.target.result}
    openRequest.onerror = function(e) {console.log(e)}
}
但正如我在控制台中看到的,只有第一个表被创建!另外,当我尝试将数据添加到patients表时,会出现以下错误:

Uncaught NotFoundError: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found. 

我错了什么?谢谢

在开发过程中,您可能已经将新的_应用程序增加到了版本2。在上面的代码中将它升级到版本3,它就可以工作了。如果没有,请添加一个
openRequest.onblocked
处理程序,并向所有事件处理程序添加
console.log
行,以查看哪个事件处理程序被触发