【发布时间】:2019-01-14 06:36:57
【问题描述】:
我有以下要添加到 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");
- 创建新事务是一项昂贵的操作吗?
提前感谢所有花时间回复的人! :)
【问题讨论】:
标签: javascript html indexeddb