AKA*_*AKA 0 google-chrome indexeddb
我正在尝试查看objectStore中是否已存在条目.如果条目存在,我需要改变它的一些字段; 如果条目不存在,我需要添加它.
这是我的查询:
var db = html5rocks.indexedDB.db;
var trans = db.transaction(["topics"], "readwrite");
var store = trans.objectStore("topics");
var findRequest = store.get(tHash);
findRequest.onsuccess = function(event){
console.log("logging event");
console.log(event);
var cursor = event.target.result;
}
findRequest.onerror(e){
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是findRequest.onsuccess函数总是触发 - 即使get(tHash)请求不可能找到任何东西(顺便说一下,"topic"对象存储在我这样做时包含零条目......).我想我会使用onsuccess和onerror函数来判断我是否需要更新现有记录或创建新记录.我究竟做错了什么?
直接从马的嘴里:
IDBObjectStore.get()如果具有给定键的记录不存在,如记录存在,但未定义为值,则会产生相同的结果.如果您需要区分两种情况,可以使用openCursor相同的密钥.如果存在记录,这将返回未定义为值的游标,如果不存在此类记录,则返回无游标.
我想你想要的东西:
var cursorRequest = store.openCursor(tHash);
cursorRequest.onsuccess = function(event) {
var cursor = event.result;
if (cursor) {
// entry exists
} else {
// entry doesn't exist
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |