gpt4 book ai didi

javascript - 无法在 'put' : The transaction has finished 上执行 'IDBObjectStore'

转载 作者:行者123 更新时间:2023-12-02 21:02:49 25 4
gpt4 key购买 nike

我正在尝试使用indexedDB更新我的简单应用程序中的条目,但是我收到无法在“IDBObjectStore”上执行“put”:事务已完成。

我似乎无法弄清楚为什么它无法完成事务,我尝试了调试器,它停在这一行: var updateNameRequest =taskStore.put( requestForItem.result.name, Number(requestForItem .result.id)) 请参阅下面我包含的代码片段。对于额外的上下文创建、读取和删除工作来说,这只是更新我遇到问题的数据

我还尝试实现从 Mozilla 获得的 openCursor 技术,我将其注释掉,因为它也不起作用(我得到了相同的行为)Check out my repo I know it's still very messy :(

const request = window.indexedDB.open("toDoList", 2);
var db;

request.onsuccess = function (event) {
console.log("check out some data about our opened db: ", request.result);
db = event.target.result; // result of opening the indexedDB instance "toDoList"
getTasks(); //just a function to retrieve data
};

$(document).on("click", ".editBtn", function () {
var transaction = db.transaction("tasks", "readwrite");
var tasksStore = transaction.objectStore("tasks");
console.log(tasksStore);
let taskId = $(this).attr("idNo");

var requestForItem = tasksStore.get(Number(taskId));
requestForItem.onsuccess = function () {
// console.log(requestForItem.result)
var oldData = requestForItem.result;
// prepopulate the input
$(".editInput").val(requestForItem.result.name);

$(".saveBtn").click(function () {
requestForItem.result.name = $(".editInput").val().trim()
console.log( requestForItem.result)
var updateNameRequest = tasksStore.put( requestForItem.result.name, Number(requestForItem.result.id))
console.log("-------------", updateNameRequest.transaction) // doesn't get to this line
updateNameRequest.onerror = function() {
console.log("something went wrong")
console.log(updateNameRequest.error)
};
updateNameRequest.onsuccess = function() {
console.log("here")
$(".editInput").val("")
getTasks();
};
});
};

最佳答案

当所有请求都已完成并且在控制权返回到事件循环之前不再发出任何请求时,索引数据库事务会自动提交。换句话说 - 您可以在先前请求的成功或错误回调中发出新请求,但不能在其他异步回调(例如事件处理程序)中发出新请求。

您需要在点击处理程序中启动一个新事务,因为任何先前的事务都将自动提交。

关于javascript - 无法在 'put' : The transaction has finished 上执行 'IDBObjectStore',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61296252/

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