使用indexedDB的正确打开方式和多种使用场景
IndexedDB 是一个运行在浏览器上的非关系型数据库,用于存储大量数据。以下是使用 IndexedDB 的正确打开方式以及几种使用场景的示例代码。
正确打开 IndexedDB 的方式:
// 打开或创建数据库
const openRequest = indexedDB.open('MyDatabase', 1);
// 数据库升级时触发
openRequest.onupgradeneeded = function(event) {
const db = event.target.result;
// 如果没有对象存储空间,则创建一个
if (!db.objectStoreNames.contains('MyObjectStore')) {
const objectStore = db.createObjectStore('MyObjectStore', { autoIncrement: true });
// 定义存储数据的schema
objectStore.createIndex('name', 'name', { unique: false });
objectStore.createIndex('email', 'email', { unique: true });
}
};
// 数据库打开成功时触发
openRequest.onsuccess = function(event) {
const db = event.target.result;
// 可以使用db进行数据操作
};
// 数据库打开失败时触发
openRequest.onerror = function(event) {
// 处理错误
console.error('Database error:', event.target.errorCode);
};
使用 IndexedDB 的场景示例:
- 添加记录:
const db = openRequest.result;
const transaction = db.transaction('MyObjectStore', 'readwrite');
const objectStore = transaction.objectStore('MyObjectStore');
const value = { name: 'John Doe', email: 'johndoe@example.com' };
objectStore.add(value);
- 读取记录:
const db = openRequest.result;
const transaction = db.transaction('MyObjectStore', 'readonly');
const objectStore = transaction.objectStore('MyObjectStore');
const readRequest = objectStore.get(1); // 假设记录ID为1
readRequest.onsuccess = function(event) {
console.log(event.target.result); // 输出记录
};
- 更新记录:
const db = openRequest.result;
const transaction = db.transaction('MyObjectStore', 'readwrite');
const objectStore = transaction.objectStore('MyObjectStore');
const updateRequest = objectStore.put({ id: 1, name: 'Jane Doe' });
updateRequest.onsuccess = function(event) {
console.log('Record updated');
};
- 删除记录:
const db = openRequest.result;
const transaction = db.transaction('MyObjectStore', 'readwrite');
const objectStore = transaction.objectStore('MyObjectStore');
const deleteRequest = objectStore.delete(1); // 假设删除ID为1的记录
deleteRequest.onsuccess = function(event) {
console.log('Record deleted');
};
- 查询记录:
const db = openRequest.result;
const transaction = db.transaction('MyObjectStore', 'readonly');
const objectStore
评论已关闭