0

您好我正在尝试通过传递其 ID 来删除索引数据库中的记录,但我的功能无法正常工作,甚至 Visual Studio 智能也没有显示任何此类功能。索引数据库 API 的 objectstore.delete() 函数是否已被贬值,或者我在调用它时做错了什么。
以下是代码spinet

  var result = objectStore.delete(key);
            result.onsuccess = function() {
                alert('Success');
            };
4

2 回答 2

1

按键删除功能在所有浏览器 Chrome、FF 和 IE10 中都能正常工作。这是示例代码:

var connection = indexedDB.open(dbName);
connection.onsuccess = function(e) {
    var database = e.target.result;
    var transaction = database.transaction(storeName, 'readwrite');
    var objectStore = transaction.objectStore(storeName);
    var request = objectStore.delete(parseInt(key));
    request.onsuccess = function (event)
    {
        database.close();
    };

}
于 2013-10-01T13:27:43.493 回答
1

IndexedDB 中的几乎所有内容都以相同的方式工作,您的问题掩盖了对该模型的误解:一切都发生在事务中。

除了打开数据库之外,IndexedDB API 中几乎没有什么是同步的。因此,您在处理记录时永远不会看到类似的东西database.delete()database.set()

要删除一条记录,就像获取或设置一样,首先要在数据库上创建一个新事务。然后,您使用该事务(如在Deni 的示例中)为您的更改调用方法。

当事务超出所有函数的范围时,事务就会“消失”,然后您的更改将提交到数据库。在此事务对数据库(而不是数据库本身)的引用上,您可以挂钩事件侦听器,例如成功和错误回调。

于 2013-10-01T13:52:22.367 回答