Javascript objectStore.transaction和db.transaction()之间的差异

Javascript objectStore.transaction和db.transaction()之间的差异,javascript,transactions,indexeddb,Javascript,Transactions,Indexeddb,我一直在努力,直到它说: 这听起来可能令人困惑,但 他们有这样一个片段: var db = event.target.result; objectStore.transaction.oncomplete = function(event) { var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers"); 所以我对这两种不同的交易感到困惑。第一个调用时不使用括号,第二

我一直在努力,直到它说:

这听起来可能令人困惑,但

他们有这样一个片段:

var db = event.target.result;
objectStore.transaction.oncomplete = function(event) {
   var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");
所以我对这两种不同的交易感到困惑。第一个调用时不使用括号,第二个调用时使用括号。第一个是objectStore对象上的事务,第二个是db对象上的事务

问:它们都被称为“交易”,这是巧合吗

Q:它们都是方法吗?

objectStore.transaction.oncomplete objectStore是db.transaction已经打开的objectStore的一个属性。 它添加了一个oncomplete事件,因此当事务完成时,它可以执行其他操作,在这种情况下,可能在不同的商店或其他地方打开一个新事务

第二个是db.transaction,是db上打开新事务的方法

那么代码的区别是什么呢

var trans = db.transaction("store1", "readonly"); // creates a transaction
store = trans.objectStore("store1"); // opens the objectStore on the just created transaction
// store.transaction is the same as trans, it returns the transaction to which the Objectstore belongs.
事务对象具有一些属性

模式-属性只读/读写 事务所属的db属性数据库 中止方法终止并回滚事务 objectStore方法打开objectStore onabort/oncomplete/onerror事件 希望这能回答你的问题