IDBObjectStore.transaction
此屬性可以返回IndexedDB資料庫指定物件倉庫操作當前所在事務。
資料庫物件倉庫的增刪改查操作都要藉助於事務來完成。
關於事務的更多內容可以參閱indexedDB transaction 事務一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let transaction = objectStore.transaction;
返回值是一個事務物件,下面通過程式碼例項進行一下演示。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> let students=[ { id:1001, name:"張三", age:21, sex:"男" },{ id:1002, name:"李四", age:20, sex:"女" },{ id:1003, name:"王五", age:19, sex:"女" } ]; let request = window.indexedDB.open("antzone", 1); request.onupgradeneeded = (ev) => { let db = ev.target.result; if (!db.objectStoreNames.contains('students')) { let objectStore = db.createObjectStore('students',{autoIncrement:true}); objectStore.createIndex("xingbie","sex",{ unique: false }); } } request.onsuccess = (ev) => { let db = ev.target.result; let transaction = db.transaction(['students'], 'readwrite'); let objectStore = transaction.objectStore('students'); for(let i=0;i<students.length;i++){ objectStore.add(students[i]); } console.log(objectStore.transaction); } </script> </head> <body> <p>列印物件倉庫操作所在的事務</p> </body> </html>
程式碼執行效果截圖如下:
程式碼簡單分析如下:
(1).建立資料庫和物件倉庫後,為物件倉庫批量新增資料。
(2).這些操作都要藉助於事務完成。
(3).db.transaction(['students'], 'readwrite')建立一個和物件倉庫相關聯的事務物件。
(4).objectStore.transaction屬性返回的就是上述事務物件。