objectStore.transaction和db.transaction()之间的区别.objectStore()

时间:2014-07-23 20:28:29

标签: javascript transactions indexeddb

我正在an IndexedDB article完成工作,然后就说:

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

他们有这个片段:

var db = event.target.result;
objectStore.transaction.oncomplete = function(event) {
   var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");

所以我对两个不同的交易感到困惑。第一个是在不使用括号的情况下调用的,第二个是使用括号。第一个是objectStore对象上的事务,第二个是db对象上的事务。

问:他们被称为交易'这是巧合吗?

问:这两种方法都是吗?

1 个答案:

答案 0 :(得分:2)

objectStore.transaction.oncomplete Objectstore是已打开的对象库(通过db.transaction)的属性。 它添加了一个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.

事务对象具有一些属性

  • mode - property(readonly / readwrite)
  • db property(事务所属的数据库)
  • abort方法(杀死并回滚事务)
  • objectStore方法(打开一个objectStore
  • onabort / oncomplete / onerror events

希望能回答你的问题