再次,我对indexeddb有一些问题。 I'm得到一个indexeddb调用堆栈的状态错误无效?
InvalidStateError: A Mutation operation was attempted on a database that did not allow mutations.
和也是一个
AbortError
这里是我的代码:
DB_LINK.prototype.pushStoreNumeric = function()
{
// Saving Values
var _temp = 0;
var _version = this.link.version;
var _name = this.link.name;
var that = this;
var _objectStoreNames = this.link.objectStoreNames;
// Close DB
this.link.close();
this.state = 4;
// Reopen Database
this.req = indexedDB.open(_name,_version+1); // Abort error here
this.req.onupgradeneeded = function() {
that.state = 1;
// Get Number of object stores
_temp = _objectStoreNames.length;
if(_temp != 0)
{
// Already object stores: read highest value
_temp = parseInt(_objectStoreNames[_objectStoreNames.length - 1]);
}
that.link.createObjectStore(_temp); // InvalidStateError here
};
我根据注释已标记那里发生的错误。
InvalidStateError首先发生,AbortError如下。
我在同一个数据库的另一个onsuccess函数内调用这个函数。这可能是问题吗?
谢谢,你指出了这个问题。 'this.link' _was_我的链接到数据库,在我关闭它之前。我没有在'this.link'中存储新链接,这与'that.link'相等(因为在所示代码中'var that = this')。我通常想要做的就是使用这个功能,为数据库添加一个新的商店。数据库中的商店有数字名称(由我定义),现在这个代码工作!而且,因为我只能在versionchange事务中创建新的商店,所以我必须增加数据库的版本 - 所以这是正确的。谢谢! – erik