在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;
})
}
然后,“渲染”功能使应用程序重新渲染,并且运行了更多事务,但是它们都引发了前面提到的错误。
如果未调用DeleteApiToken,则不会。
如果您看到我的代码有一个错误,那将是非常棒的,否则只需简单解释为何会引发SubTransactionError即可。谢谢!
最佳答案
仅此代码似乎不太可能导致错误。该错误表明存在名为下划线的表。是这样吗?如果没有,我会怀疑您无意中将DB.MySelf表的'name'属性更改为下划线。
另一个问题是DB是否用于其他功能,例如CacheController.Invalidate()?如果是这样,代码看起来如何?
错误说明:SubTransactionError仅在从正在进行的事务内启动事务并且新事务尝试包含正在进行的事务中未包含的表时才会发生。例:
db.transaction ('rw', 'friends', ()=>{
db.transaction ('rw', 'pets', ()=>{
// SubTransactionError: Table 'pets' not included in parent transaction.
});
});