JavaScript 數據庫,通常指的是在瀏覽器環境中運行的 IndexedDB,它是一個事務型數據庫系統。IndexedDB 支持事務(Transaction),允許你在多個對象存儲(object stores)上執行一系列的操作,這些操作要么全部成功,要么全部失敗,從而確保數據的完整性和一致性。
要在 IndexedDB 中使用事務,你需要執行以下步驟:
mode
(默認為 readonly
或 readwrite
)和 isolationLevel
(可選,用于指定事務的隔離級別)。objectStore
方法獲取對象存儲的引用。add
、put
、get
、delete
等。以下是一個簡單的示例,展示了如何在 IndexedDB 中使用事務:
// 打開數據庫連接
const request = indexedDB.open('myDatabase', 1);
request.onupgradeneeded = function(event) {
const db = event.target.result;
// 創建一個新的對象存儲
const objectStore = db.createObjectStore('users', { keyPath: 'id' });
// 添加一個新用戶
const newUser = { name: 'John Doe', age: 30 };
const addTransaction = db.transaction(['users'], 'readwrite');
const usersObjectStore = addTransaction.objectStore('users');
usersObjectStore.add(newUser);
};
request.onsuccess = function(event) {
const db = event.target.result;
// 創建一個事務以讀取用戶數據
const readTransaction = db.transaction(['users'], 'readonly');
const usersObjectStore = readTransaction.objectStore('users');
// 獲取所有用戶
const getRequest = usersObjectStore.getAll();
getRequest.onsuccess = function(event) {
console.log('All users:', event.target.result);
};
};
在這個示例中,我們首先打開一個名為 myDatabase
的數據庫連接,并在 upgradeneeded
事件處理程序中創建一個名為 users
的對象存儲。然后,我們使用事務向 users
對象存儲添加一個新用戶。最后,我們創建另一個事務以讀取 users
對象存儲中的所有用戶數據。