readwrite トランザクションを使用して (Chrome で) IndexedDB に put を実行し、すぐにインデックスと readonly トランザクションを使用して同じ indexedDB オブジェクトストアからクエリを実行する js があります。返される結果には、プットからの変更が含まれていない場合もあれば、変更が含まれている場合もあります。IndexedDB でこの種のダーティな準備ができていると予想されますか? それを回避する方法はありますか?
おそらく、私は 2 つの異なる txn を使用しており、1 つだけを使用する必要があるためです (その理由は、これらの呼び出しが実際には、プットとクエリをそれぞれ独自の txns を持つ異なる API 呼び出しに分離する API の一部であるためです)? それでも、2 番目の txn が開始される前に、最初の txn を実行してコミットする必要があるようです。
私の疑似コードは次のようになります。
var txn = idb.transaction([DOC_STORE], "readwrite");
var putRequest = txn.objectStore(DOC_STORE).put(myDoc);
putRequest.onsuccess = function (e) {
var txn2 = idb.transaction([DOC_STORE], "readonly");
var store = txn2.objectStore(DOC_STORE);
var anotherRequest=store.index.openCursor();
.... walk the cursor here. Sometimes I don't see my changes from my put
};