データベースの変数をウィンドウのスコープに保持していますが、今はトランザクションとオブジェクトストアについても不思議に思っています。トランザクションを開いた状態を悪い習慣とみなしていますか?
myRequest = indexedDB.open('myDatabase')
myRequest.onupgradeneeded = function(response) {
\t var myDatabase
\t \t ,myObjectStore
\t
\t myDatabase = response.target.result
\t myObjectStore = myDatabase.createObjectStore('myData',{autoIncrement:true})
}
myRequest.onerror = function(response) {
\t debugger
}
myRequest.onsuccess = function(response) {
\t var obj = {}
\t window.myDatabase = response.target.result // This is ok, right?
\t window.myTransaction = myDatabase.transaction(['myData'],'readwrite') // But what about this?
\t window.myObjectStore = myTransaction.objectStore('myData') // And this?
\t obj.field1 = 'a'
\t obj.field2 = 'b'
\t myObjectStore.add(obj)
}
これはおそらく、あなたが特定の「表」を参照したいときに使用されるように、ウィンドウの範囲で取引を維持しても意味がありません。
結局のところ、トランザクションはいつ完了したとみなされますか?私は何か必要なたびに新しいトランザクションを作成する代わりに、これについて考えました。