gpt4 book ai didi

javascript - 未找到错误: DOM IDBDatabase Exception 8 when creating transaction in indexedDB

转载 作者:行者123 更新时间:2023-11-28 02:06:44 25 4
gpt4 key购买 nike

我尝试使用 Indexed DB API 进行一些测试。

我的代码如下:

<html>
<head>
<script type="text/javascript">

var db = null;
const dbName = "contactsDB";
const dbVersion = 1;
const storeName = "contacts";

const contacts = [
{id : 1, firstname : 'F1', lastname : 'L1'},
{id : 2, firstname : 'F2', lastname : 'L2'}
];

function init() {
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
openDB();
}

function openDB() {
var request = window.indexedDB.open(dbName, dbVersion);

request.onerror = function (e) {
alert('DB connexion error : ' + e.target.errorCode);
};

request.onsuccess = function (e) {
alert('DB connexion success');
// get db instance
db = e.target.result;
};

// seulement implemente sur les browsers recents
request.onupgradeneeded = function (e) {
// updgrade DB
var db = e.target.result;

if (db.version != dbVersion) {
// create object store
var objectStore = db.createObjectStore(storeName, {keyPath : "id"});

// create index to search contacts by lastname.
// Duplicates possible ==> so no unique index
objectStore.createIndex("lastname", "lastname", {unique : false});
}
};
}

function addToDB() {
// get object store in tx
var objectStore = getObjectStore(storeName, "readwrite");

// stores values
for (var c in contacts) {
var request = objectStore.add(contacts[c]);
request.onsuccess = function (e) {
alert('Add success for ' + e.target.result);
}
}

}

function getObjectStore(store_name, mode) {
var tx = db.transaction(store_name, mode);
return tx.objectStore(store_name);
}

</script>
</head>
<body onload="init();">
<input type="button" onclick="addToDB();" value="Add" />
</body>
</html>

我有一个网络服务器来使用具有本地主机域的页面。

当我使用Firefox 22.0加载页面时,数据库打开成功。但是,当我单击“添加”按钮并调用 addToDB 函数时,Firefox 控制台中出现以下错误:

NotFoundError: The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened.
var tx = db.transaction(store_name, mode);

我还在 Chrome 24 上进行了相同的测试。当我单击“添加”按钮时,错误来自同一行 var tx = db.transaction(store_name, mode);在 Chrome 控制台上出现以下错误:

Uncaught Error: NotFoundError: DOM IDBDatabase Exception 8

通过搜索有关该异常的更多信息,我找到了以下链接:

https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabaseException?redirectlocale=en-US&redirectslug=IndexedDB%2FIDBDatabaseException

在该链接中,它被标记为异常 8:请求被中止,例如,通过调用 IDBTransaction.abort。

所以,我的问题是我不知道为什么我的请求在那时被中止。

有人有办法帮助解决这个问题吗?

谢谢。

西尔万

最佳答案

由于 if (db.version != dbVersion) 检查,未创建您的对象存储。永远不会进入该 block 。只需删除该检查,更改为 const dbVersion = 2; 一切都会好起来的。

关于javascript - 未找到错误: DOM IDBDatabase Exception 8 when creating transaction in indexedDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661373/

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