gpt4 book ai didi

javascript - 使用 autoIncrement 时删除 IndexedDB 中的项目

转载 作者:行者123 更新时间:2023-11-28 20:41:22 26 4
gpt4 key购买 nike

我正在尝试实现这个example .

一切正常,直到我尝试删除某个项目。

使用这个:

request.onupgradeneeded = function(event) {
console.log("upgrade", event);

db = event.target.result;
console.log("db", db);

if (!db.objectStoreNames.contains("chatBot")) {
var objectStore = db.createObjectStore("chatBot", {keyPath: "timeStamp", autoIncrement: true});
}
};

并设置删除:

btnDelete.addEventListener("click", function() {
var id, transaction, objectStore, request;

id = document.getElementById("txtID").value;
console.log("id", typeof id);

transaction = db.transaction("people", "readwrite");
objectStore = transaction.objectStore("people");
request = objectStore.delete(id);
request.onsuccess = function(evt) {
console.log("deleted content");
};
}, false);

将项目添加到indexedDB没有问题,但由于某种原因,我无法弄清楚为什么它无法删除这些项目。

id 是一个字符串,objectStore.delete(id) 是正确的实现。

这是一个pastebin示例的内容

使用火狐18

最佳答案

由于您使用的是 autoIncrement key ,因此该 key 是由用户代理生成的。在 FF 和 Chrome 中,它是从 1 开始的整数。如果您提供有效的 key 并将您的 id 转换为整数,您的代码可以正常运行。我在 FF 和 Chrome (dartium) 中进行了测试。根据 IndexedDB API key 定义,'1'1 是不同的 key 。

另一个问题IndexedDB API设计。删除方法始终 return to success无论给定的键是否被删除,事件处理程序的结果都是未定义。所以调试起来非常困难。我认为它至少应该返回已删除记录的数量。

[编辑]模组代码:http://pastebin.com/mLpU0VfP
[编辑...另]注意 +string 转换为 integer
request = db.transaction("people", "readwrite").objectStore("people").delete(+id);

关于javascript - 使用 autoIncrement 时删除 IndexedDB 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330213/

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