Вот функция, которую я пытаюсь вызвать:
function restoreCurrent() {
var tzact = db.transaction(['Picture'],"readonly").objectStore("Picture").get(2);
tzact.onerror = function(event) {
alert ("Failed to retrieve the data.");
}
tzact.onsuccess = function(event) {
document.getElementById("demo").innerHTML += "Transaction success.<br />";
}
}
window.onload = function() {
restoreCurrent();
}
Как вы можете видеть, она должна что-то выводить либо при успешном завершении, либо при ошибке.На самом деле это ничего не выводит.После этого у меня был дополнительный код в функции .onsuccess, но ничего не выполняется.И линия, где он перестает работать - это вызов базы данных, я много тестировал.Для записи, и эта строка кода, когда я создавал базу данных
var tzact = db.transaction(['Picture'], "readwrite").objectStore("Picture").add({id : 2, pictureData : working});
, и эта строка, когда я пытаюсь обновить эту конкретную запись
var tzact = db.transaction(['Picture'], "readwrite").objectStore("Picture").put({id : 2, pictureData : working});
, казалось, выполняются OK - илипо крайней мере, функции, в которые они были встроены, продолжали выводить сообщения об успехе.Без возможности извлечь какие-либо данные, трудно быть уверенным.
РЕДАКТИРОВАТЬ: сам понял.Ответ в том, что я должен был поместить это в каждую функцию:
var request = window.indexedDB.open("[database name]",5);
request.onerror = function() {
alert ("Failed to open the database.");
}
request.onsuccess = function() {
var db = request.result;
var tzact = db.transaction(['Picture'],"readonly").objectStore("Picture").get(2); // or "readwrite" and .put(2), as the case might be
tzact.onerror=function() {
alert ("Data transaction failed.");
}
tzact.onsuccess=function() {
document.getElementById("demo").innerHTML += "Data transaction successful.<br />";
if (tzact.result) {
var working = tzact.result.pictureData;
// the rest of the function goes here
} else {
alert ("No data received.");
}
}
}