我有一些 js 使用 readwrite 事务对 IndexedDB(在 Chrome 中)执行 put,然后立即使用索引和 readonly 事务从同一个 indexedDB objectstore 查询。有时,我得到的结果不包括我的看跌期权和其他时候的变化。在 IndexedDB 中是否可以预料到这种脏东西?有没有办法避免它?
也许是因为我使用了 2 个不同的 txns 并且应该只使用一个(原因是这些调用实际上是 api 的一部分,它将 put 和 query 分成不同的 api 调用,每个调用都有自己的 txns)?尽管如此,似乎第一个 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
};