javascript - 无法创建第二个项目 objectStore

  显示原文与译文双语对照的内容

我基本上拥有以下代码,可以使用一个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)}
}

但是,就像我在控制台中看到的,只有第一个表 ! 当我试图向患者表中添加数据时,我得到了以下错误:


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

我怎么了谢谢? !

时间: 作者:

在开发过程中,你可能已经增加了new_app到版本 2. 在 上面 代码中增加版本 3,它就会工作。 如果没有,添加一个 openRequest.onblocked 处理程序并向所有事件处理程序添加 console.log 行,以查看哪个事件正在被触发。

...