0

在 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 就足够了。谢谢!

4

1 回答 1

2

仅此代码似乎不太可能导致错误。该错误表明有一个名为underscore的表。是这样吗?如果不是,我怀疑您无意中将 DB.MySelf 表的 'name' 属性更改为underscore

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

错误说明:SubTransactionError 仅在从正在进行的事务中启动事务并且新事务尝试包含未包含在正在进行的事务中的表时才会发生。例子:

db.transaction ('rw', 'friends', ()=>{
    db.transaction ('rw', 'pets', ()=>{
        // SubTransactionError: Table 'pets' not included in parent transaction. 
    });
});
于 2016-07-29T21:50:04.327 回答