我正在阅读MDN上的这篇文章:Using IndexedDB。
有两个创建新对象存储并在创建后添加数据的示例。
第一个示例使用IDBObjectStore.transaction.oncomplete
确保在添加数据之前完成商店创建。
var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
// Use transaction oncomplete to make sure the objectStore creation is
// finished before adding data into it.
objectStore.transaction.oncomplete = function(event) {
var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");
customerData.forEach(function(customer) {
customerObjectStore.add(customer);
});
};
但是,当我看下面的示例时,这让我有些困惑:
var objStore = db.createObjectStore("names", { autoIncrement : true });
customerData.forEach(function(customer) {
objStore.add(customer.name);
});
您可以看到数据是在没有事务的情况下添加的,因此,从理论上讲,第二个示例在尝试在对象存储就绪之前添加数据时会引起一些问题。
令人惊讶的是,两个示例都可以工作
我想知道应该优先选择哪个人,为什么要优先选择它。真的有必要使用交易吗?
答案 0 :(得分:0)
使用第二个示例,不需要第一个示例。