gpt4 book ai didi

javascript - 无法创建第二个 objectStore IndexedDB

转载 作者:行者123 更新时间:2023-11-30 17:13:54 24 4
gpt4 key购买 nike

我基本上有这段代码来生成一个带有一个 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 行添加到所有事件处理程序以查看哪个被触发。

关于javascript - 无法创建第二个 objectStore IndexedDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473502/

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