google-chrome - 检查 IndexedDB objectStore 是否已经包含键

标签 google-chrome indexeddb

如果键已经存在,将对象添加到 IndexedDB objectStore 将失败。如何检查具有给定键的对象是否存在 - 最好是同步(没有理由进行另一层回调)并且不拉动对象。

我知道如何通过事务异步获取请求,但每次我想添加一个对象时,似乎都有些困难。

注意解决方案只需要在 Chrome 中工作(如果有帮助)

最佳答案

到目前为止,所有浏览器都没有实现同步 API,因此您将不得不异步执行。安 objectStore暴露一个 get方法,您为它提供一个键,它会返回与键匹配的对象(或 null)。

MDN 上有一个非常好的教程,涵盖了 IDB 的使用,以及 getting a record也包括在内,但内联代码是:

db.transaction("customers").objectStore("customers").get("444-44-4444").onsuccess = function(event) {
  alert("Name for SSN 444-44-4444 is " + event.target.result.name);
};

如果您不想检索记录,那么您可以随时使用 count索引的方法如解释 here in the spec .根据结果​​,您可以使用 addput修改记录,如果不需要,它会保存提取记录。

关于google-chrome - 检查 IndexedDB objectStore 是否已经包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306611/

相关文章:

javascript - Firefox 上 Web Worker 中的 IndexedDB

windows - 可以使用 Delphi 为 Chrome 创建扩展吗?

css - Chrome 和 Firefox 溢出 :hidden jumping elements

django - list : Line: 1, 列 : 1, Chrome 浏览器上的语法错误

javascript - 如何高效地将大文件加载到 IndexedDB 存储中?我的应用程序在超过 100,000 行时崩溃

javascript - 如何通过js删除IndexedDB旧版本数据库?

html - 在 Chrome 中播放多种声音

html - iFrame 上的 Overflow-y 不显示滚动条

javascript - IDBDatabase.transaction 始终为 null

javascript - 有缺陷的 IndexedDB 实现的特征检测?