Dexie:SubTransactionError

Dexie: SubTransactionError

我在 运行在 Dexie 中进行交易时遇到此错误:

name: SubTransactionError message: table _ not included in parent transaction

这只会在我 运行 这段代码之后发生:

DeleteApiToken.then (() => {
            CacheController.Invalidate();
            DataControllerCreator.Blocked++;
            Render();
        });
        Api.Call(this.ApiCall,this.Data,() => {DataControllerCreator.Blocked--;},{ResetCacheState: this.ResetCacheState});
    };

DeleteApiToken 函数如下所示。

function DeleteApiToken() {
            return DB.transaction('rw', DB.MySelf, () => {
                DB.MySelf.delete('ApiToken');
            }).catch(function (E) {
                console.log(E);
                return false;

            })
        }

Render 函数随后会导致应用程序重新呈现并且更多事务是 运行,但它们都抛出前面提到的错误。 如果未调用 DeleteApiToken,则不会调用。

如果您能看到我的代码有错误,那就太好了,否则只需简单解释为什么会抛出 SubTransactionError 就足够了。谢谢!

单独使用此代码似乎不太可能导致错误。该错误表明存在名为 underscore 的 table。是这样吗?如果不是,我怀疑你无意中将 DB.MySelf table 的 'name' 属性 更改为 underscore.

另外一个问题是CacheController.Invalidate()等其他函数中是否使用了DB?如果是这样,代码在那里看起来如何?

错误解释:SubTransactionError 仅当从正在进行的事务中启动事务并且新事务试图包含未包含在正在进行的事务中的 table 时才会发生。示例:

db.transaction ('rw', 'friends', ()=>{
    db.transaction ('rw', 'pets', ()=>{
        // SubTransactionError: Table 'pets' not included in parent transaction. 
    });
});