2013-10-16 56 views
0

我有這個代碼的問題。IndexedDB中的兩個查詢

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.continue()」執行時可以,但有時會崩潰。

我不知道該怎麼辦......

誰能幫助我? 謝謝!

回答

0

你能解釋一下你想完成什麼嗎?

爲什麼2筆交易?你可以用一個來做所有事情。只需在範圍內打開兩個對象庫的事務。

爲什麼2個遊標?您只能使用一個,並使用get獲取您想要的第二個對象存儲中的值。您可以在主鍵上執行此操作或使用索引

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

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

我試圖打開這兩個對象庫,但沒有結果。你能告訴我一個例子嗎?謝謝! – luperxe

+0

我在我的文章中添加了一個示例 –

+0

謝謝!我會試試看! – luperxe