Я использую IndexedDB, и у меня есть два хранилища объектов: equip (представляет другое оборудование, первичный ключ tagNo) и equipParts (представляет части части оборудования и имеет индекс, который основан на номере тега/серийном номере, первичный ключ seqNo, с полем tagNo, который представляет оборудование, часть которого является частью).
Если я удалю запись в оборудовании, я хочу удалить все записи в equipParts с тегом NoO equip (точно так же, как equipParts.tagNo = equip.tagNo).
Выдержка из моего кода:
var tx = db.transaction(["equip", "equipParts"],"readwrite");
var estore = tx.objectStore("equip");
var pstore = tx.objectStore("equipParts");
var tagIndex = pstore.index("by_tagNo");
var pdestroy = tagIndex.openCursor(IDBKeyRange.only(tagno)); //opens all records bearing the selected tag number
pdestroy.onsuccess = function() {
var cursor = pdestroy.result;
if (cursor) {
if (cursor.value.tagNo == tagno) {
pstore.delete(cursor.value.seqNo); //I guess I'm wrong here
}
cursor.continue;
}
}
pdestroy.onerror = function() {
alert("Deletion attempt NG");
}
var ereq = estore.delete(tagno);
ereq.onsuccess = function(e) {
alert("Form deletion OK");
window.location = "index.html";
}
ereq.onerror = function(e) {
alert("Form deletion NG");
window.location = "index.html";
}
db.close();
Проблема заключается в том, что удаляется только запись в оборудовании; там хранятся записи в equipParts. Есть ли способ удалить несколько записей в хранилище объектов IndexedDB на основе не уникального индекса (который может быть основным ключом хранилища родительских объектов)?