Chr*_*ris 9 google-chrome indexeddb
如果密钥已存在,则将对象添加到IndexedDB objectStore将失败.如何检查具有给定键的对象是否存在 - 最好是同步(没有理由进行另一层回调)并且不拉动对象.
我知道如何通过事务异步获取请求,但每次我想添加一个对象时都要经历一些考验.
note解决方案只需在Chrome中运行(如果有帮助)
Kya*_*Tun 14
检查密钥是否存在的最佳方法是objectStore.count(key).哪个是异步的.
在您的情况下,最好的选择是您的密钥的openCursor.如果存在,则会出现光标.
var req = objectStore.openCursor(key);
req.onsuccess = function(e) {
var cursor = e.target.result;
if (cursor) { // key already exist
cursor.update(obj);
} else { // key not exist
objectStore.add(obj)
}
};
Run Code Online (Sandbox Code Playgroud)
到目前为止,没有一个浏览器实现了同步API,因此您将不得不进行异步.一个objectStore暴露了get,你为它提供的重要手段,它会回报你的密钥相匹配的对象(或空).
有一个非常好的MDN教程,涵盖了使用IDB,并且也提供了记录,但内联代码是:
db.transaction("customers").objectStore("customers").get("444-44-4444").onsuccess = function(event) {
alert("Name for SSN 444-44-4444 is " + event.target.result.name);
};
Run Code Online (Sandbox Code Playgroud)
如果您不想检索记录,那么您始终可以count在索引中使用该方法,如规范中所述.根据您可以使用add或put修改记录的结果,如果您不需要,它将保存提取记录.
| 归档时间: |
|
| 查看次数: |
11676 次 |
| 最近记录: |