删除功能是否在HTML5索引数据库API中折旧

时间:2013-10-01 12:22:28

标签: html5 indexeddb

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

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

2 个答案:

答案 0 :(得分: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();
    };

}

答案 1 :(得分:1)

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

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

要删除记录,与获取或设置一样,首先要在数据库上创建新事务。然后,您可以使用该事务(如Deni's example)来调用更改方法。

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