Я использую IndexedDB, и у меня есть два хранилища объектов: equip (представляет собой различное оборудование, первичный ключ tagNo) и equipParts (представляет части часть оборудования и имеет индекс, который основан на номере метки/серийном номере, первичном ключе seqNo с полем tagNo, которое представляет оборудование, частью которого является эта часть) .
Если я удаляю запись в equip, я хочу удалить все записи в equipParts с tagNo 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();
Проблема в том, что удаляется только запись в equip; записи в equipParts остаются там. Есть ли способ удалить несколько записей в хранилище объектов IndexedDB на основе неуникального индекса (который может быть первичным ключом хранилища родительских объектов)?