我正在尝试构建一个使用以下(一对多键值对,即每个 id 有多个图像)数据结构的 IndexedDB 应用程序:
var images = [{"id": "1", "img":["img1","img2","img3"]},
{"id": "1", "img":["img4","img5","img6"]}]
我的问题是如何放置和使用这种结构。那里的所有示例要么遍历所有键,要么具有与每个键关联的单个值,它们可以轻松获取。我可以在 get('id') 方法上打开一个光标并遍历该 id 的所有“img”项吗?这是我目前尝试过的:
1)获取特定键(一对一映射):
var dbGet = function(id, cbGet){
var transaction = db.transaction(["images"],"readonly");
var objectStore = transaction.objectStore("images");
var request = objectStore.get(id);
request.onerror = function(event) {};
request.onsuccess = function(e) {
if(typeof(e.target.result) != "undefined"){
cbGet(null,null,e.target.result);
}
};
};
2)获取所有密钥:
var dbGetAll = function(id){
var transaction = db.transaction(["images"],"readonly");
var objectStore = transaction.objectStore("images");
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
//Do something
cursor.continue();
}
};
}
3)如何获取特定键的“全部”(一对多映射)?