【问题标题】:Is delete function is depreciated in HTML5 indexed database API在 HTML5 索引数据库 API 中是否不推荐使用删除功能
【发布时间】:2013-10-01 12:22:28
【问题描述】:

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

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

【问题讨论】:

  • 很高兴看到 Deni 回答了您的问题!通过选择正确的答案来帮助保持indexeddb 标签的健康。

标签: html indexeddb


【解决方案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();
    };

}

【讨论】:

  • 是的,我在 mozilla firfox 24.0 上做同样的事情,当我写行 var request = objectStore.delete(key);它说删除功能的预期标识符和功能不起作用....
  • 能否检查key的类型是否为数字,如果不是,请在调用函数之前尝试解析值。
  • 我很高兴它成功了,我在答案中添加了解析。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2013-10-03
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多