У меня есть следующий массив объектов, которые я хочу добавить и indexedDb:
const data = [
{ name: 'abc',
color: 'blue'
},
{ name: 'xyz',
color: 'red'
},
{ name: 'yui',
color: 'black'
}];
Теперь я создаю базу данных и вставляю эти данные в хранилище так:
if (!db.objectStoreNames.contains("people")) {
peopleStore = db.createObjectStore("people", { keyPath: "name" });
peopleStore.createIndex("color", "color", { unique: false });
peopleStore.transaction.oncomplete = function(event) {
data.forEach(function(data) {
operations.add(data);
});
};
}
Я определил выражение функции с помощью метода add()
(внутри const operations
), как показано ниже:
add: function(data) {
let request = db
.transaction(["people"], "readwrite")
.objectStore("people")
.add(data);
}
Итак, вот мои вопросы:
Этот способ создает новую транзакцию каждый раз, когда метод add ()
вызывается или он вставляет все данные в одну транзакцию?
Если он создает новую транзакцию каждый раз, как я могу сделать только
1 транзакция для повышения производительности и выполнения всех операций в
это только. Я предполагаю, что мне нужно создать глобальную переменную с
выполнить транзакцию и выполнить над ней операции (есть и другие методы, такие как edit()
, delete()
и т. д., каждый из которых имеет переменную "request
", определяющую транзакцию, аналогично тому, что я показал) выше).
Должен ли я сделать глобальную переменную что-то вроде этого:
const globalTrans = db.transaction(["people"], "readwrite").objectStore("people");
- Является ли создание новой транзакции дорогостоящей операцией?
Заранее спасибо всем, кто нашел время, чтобы ответить! :)