Я пытаюсь поместить данные из базы данных в переменную. Я пробовал много вещей, в том числе функцию обратного вызова, но ничего не работает, если этот процесс выходит за пределы области действия «opencursor(). Onsuccess».Поместите данные из базы данных IndexedDB в переменную
«Alert 1» показывает результат правильно, но «Alert 2» и «Alert 3» этого не делают.
Я вызываю функцию main() из кода HTML.
Я действительно расстроен, потому что я добываю интернет, ища решение без какого-либо положительного результата.
Может кто-нибудь мне помочь, пожалуйста?
Большое спасибо.
var data=[];
function kkeyget(t1, db_name, db_version)
{
var request = indexedDB.open(db_name, db_version);
request.onerror=function()
{
alert("Error");
}
request.onsuccess=function(event)
{
var db=this.result;
var trans = db.transaction(t1, "readonly");
var objectStore = trans.objectStore(t1);
objectStore.openCursor().onsuccess = function(event)
{
var cursor = event.target.result;
if (cursor)
{
data.push(cursor.value);
//Alert 1:
alert(data[0].id);
cursor.continue();
}
else alert("No more entries!");
};
}
//Alert 2:
alert(data[0].id);
}
function main()
{
kkeyget("agenda", "example_db", 1);
//Alert 3:
alert(data[0].id);
}
Благодарим за быстрый ответ. Проблема заключается в решении выбрать IndexedDB по W3. Это то, что у нас есть. :) –