Если я хочу удалить все красные автомобили в IndexedDB, какой метод быстрее?
transaction.objectStore("cars").index("color").openCursor("red").onsuccess = e => {
var row = e.target.result;
if(row) {
row.delete();
row.continue();
}
};
Этот метод удаления строки курсора является прямым, но требует использования openCursor
(вместо openKeyCursor
), который, к сожалению, анализирует весь объект.
или
var cars = transaction.objectStore("cars");
cars.index("color").openKeyCursor("red").onsuccess = e => {
var row = e.target.result;
if(row) {
cars.delete(row.primaryKey);
}
};
Этот метод не требует, чтобы курсор анализировал весь объект, но objectStore.delete()
может потребоваться выполнить поиск по всем снова.