Я пытаюсь обновить запись в моем простом в использовании приложении с indexedDB, однако я получаю Не удалось выполнить 'put' для 'IDBObjectStore': транзакция завершена.
Я не могу понять, почему она не завершит sh транзакцию, я попробовал отладчик, и он останавливается на этой строке: var updateNameRequest = tasksStore.put( requestForItem.result.name, Number(requestForItem.result.id))
Пожалуйста, посмотрите фрагмент, который я включил ниже. Для дополнительного создания контекста, чтения и удаления работы просто отлично, это просто обновление данных, с которыми у меня возникают проблемы
. Я также попытался реализовать метод openCursor, который я получил от Mozilla, который я прокомментировал, так как он также не работает. не работает (у меня такое же поведение) Проверьте мой репо, я знаю, что он все еще очень грязный: (* 1009 *
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();
};
});
};