Javascript 无法创建第二个objectStore IndexedDB
我基本上有以下代码来生成带有一个objectStore的新数据库: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
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
行,以查看哪个事件处理程序被触发