如果键已经存在,将对象添加到 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 .根据结果,您可以使用 add
或 put
修改记录,如果不需要,它会保存提取记录。
关于google-chrome - 检查 IndexedDB objectStore 是否已经包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306611/