0

このコードに問題があります。

function checklistAntesdesalirUsuario() {

if (plataforma == plataformaW8) {
    while (db == null)
        db = abrirDB();

    var transactionUsuario = db.transaction(storeCLAntesDeSalirUsuarioNombre, "readonly");
    var transaction = db.transaction(storeCLAntesDeSalirNombre, "readonly");

    var objectStoreAntesDeSalirUsuario = transactionUsuario.objectStore(storeCLAntesDeSalirUsuarioNombre);
    var objectStoreAntesDeSalir = transaction.objectStore(storeCLAntesDeSalirNombre);

    var requestUsuario = objectStoreAntesDeSalirUsuario.openCursor();
    var request = objectStoreAntesDeSalir.openCursor();

    var cursor;
    var cursorUsuario;
    var count = 0;
    var i = 0;
    var cargadoUsuarios = false;

    var queryChecklistAntesdesalirUsuario = new Array();

    request.onsuccess = function (evt)
    {
        cursor = evt.target.result;
        seguir();
    };

    request.onerror = function(evt)
    {
        console.log("ERROR!");
    }
    requestUsuario.onsuccess = function (evt2)
    {
        cursorUsuario = evt2.target.result;
        cargadoUsuarios = true;
        seguir();
    };
    requestUsuario.onerror = function(evt)
    {
        console.log("ERROR!");
    }

    function seguir()
    {
        if (!cursor || !cargadoUsuarios)
         return;

        if (cursorUsuario && cursor.value.id_check == cursorUsuario.value.id_check) {

            cursorUsuario.continue();
        }
        else  {
            cursor.continue();
        }

        if (cursor && cursorUsuario && cursor.value.id_check == cursorUsuario.value.id_check) {
            var antesdesalir = new CLFinal(cursor.value.id_check, cursor.value.descripcioncheck, cursorUsuario.value.tarearealizada);
            queryChecklistAntesdesalirUsuario[i] = antesdesalir;
            i++;
            pintarListaChecklistAntesdesalirUsuario(queryChecklistAntesdesalirUsuario);
        }
    }
}

私がしようとしているのは、2 つのストレージからデータを取得することです。「cursor」がデータを取得する場合があり、「cursor.continue()」が実行された場合は問題ありませんが、クラッシュする場合もあります。

どうすればいいのかわからない...

誰でも私を助けることができますか?ありがとう!

4

1 に答える 1

0

あなたが達成したいことを説明できますか?

なぜ2回の取引?1つですべてを行うことができます。スコープ内の両方のオブジェクトストアでトランザクションを開くだけです。

なぜ2つのカーソル? 1 つだけを使用して、get を使用して 2 番目のオブジェクト ストアで必要な値を取得できます。主キーまたはインデックスを使用してこれを行うことができます

var transaction = db.transaction([storeCLAntesDeSalirUsuarioNombre, storeCLAntesDeSalirNombre], "readonly");

var objectStoreAntesDeSalirUsuario = transaction.objectStore(storeCLAntesDeSalirUsuarioNombre);
var objectStoreAntesDeSalir = transaction.objectStore(storeCLAntesDeSalirNombre);
于 2013-10-16T09:48:36.233 に答える