首页 > 其他分享 >indexdb增删改查示例

indexdb增删改查示例

时间:2024-12-09 20:25:02浏览次数:4  
标签:function transaction const 示例 改查 objectStore request indexdb event

IndexedDB 是一个低级 API,用于在用户的浏览器中存储大量结构化数据。下面是增删改查(CRUD)操作的基本示例:

1. 打开数据库并创建对象存储

let db;
const request = indexedDB.open('myDatabase', 1);

request.onerror = function(event) {
  console.error('Database error:', event.target.errorCode);
};

request.onsuccess = function(event) {
  db = event.target.result;
  console.log('Database opened successfully');
};

request.onupgradeneeded = function(event) {
  db = event.target.result;
  const objectStore = db.createObjectStore('myObjectStore', { keyPath: 'id' });
  objectStore.createIndex('name', 'name', { unique: false });
  objectStore.createIndex('email', 'email', { unique: true });
};

2. 添加数据(Create)

function addData(data) {
  const transaction = db.transaction(['myObjectStore'], 'readwrite');
  const objectStore = transaction.objectStore('myObjectStore');
  const request = objectStore.add(data);

  request.onsuccess = function(event) {
    console.log('Data added successfully');
  };

  request.onerror = function(event) {
    console.error('Unable to add data:', event.target.errorCode);
  };
}

// 示例数据
const newData = { id: 1, name: 'John Doe', email: 'john@example.com' };
addData(newData);

3. 读取数据(Read)

function readData(id) {
  const transaction = db.transaction(['myObjectStore'], 'readonly');
  const objectStore = transaction.objectStore('myObjectStore');
  const request = objectStore.get(id);

  request.onerror = function(event) {
    console.error('Unable to retrieve data from database:', event.target.errorCode);
  };

  request.onsuccess = function(event) {
    if (request.result) {
      console.log('Data retrieved:', request.result);
    } else {
      console.log('No data found with ID:', id);
    }
  };
}

// 查询 ID 为 1 的数据
readData(1);

4. 更新数据(Update)

function updateData(data) {
  const transaction = db.transaction(['myObjectStore'], 'readwrite');
  const objectStore = transaction.objectStore('myObjectStore');
  const request = objectStore.put(data);

  request.onsuccess = function(event) {
    console.log('Data updated successfully');
  };

  request.onerror = function(event) {
    console.error('Unable to update data:', event.target.errorCode);
  };
}

// 更新 ID 为 1 的数据
const updatedData = { id: 1, name: 'Jane Doe', email: 'jane@example.com' };
updateData(updatedData);

5. 删除数据(Delete)

function deleteData(id) {
  const transaction = db.transaction(['myObjectStore'], 'readwrite');
  const objectStore = transaction.objectStore('myObjectStore');
  const request = objectStore.delete(id);

  request.onsuccess = function(event) {
    console.log('Data deleted successfully');
  };

  request.onerror = function(event) {
    console.error('Unable to delete data:', event.target.errorCode);
  };
}

// 删除 ID 为 1 的数据
deleteData(1);

这些示例展示了如何在 IndexedDB 中进行基本的增删改查操作。请确保在实际应用中根据需要调整对象存储和索引的定义。

标签:function,transaction,const,示例,改查,objectStore,request,indexdb,event
From: https://www.cnblogs.com/jocongmin/p/18595955

相关文章

  • IndexDBWrapper库操作indexdb示例
    IndexDBWrapper是一个简化IndexedDB操作的JavaScript库。以下是如何使用IndexDBWrapper库进行增删改查操作的示例。首先,你需要引入IndexDBWrapper库。如果你使用的是npm,可以通过以下命令安装:npminstallindexdb-wrapper然后,你可以按照以下示例进行操作:1.初始化数......
  • Dexie.js 库 增删改查indexdb示例,游标、索引使用等
    增删改查以下是如何使用Dexie.js库进行增删改查操作的示例:1.初始化数据库首先,你需要安装Dexie.js:npminstalldexie然后,在你的代码中引入并初始化Dexie.js:importDexiefrom'dexie';constdb=newDexie('myDatabase');db.version(1).stores({myObjectStore:......
  • ts 装饰器使用示例
    在TypeScript中,装饰器是一种特殊类型的声明,它能够被附加到类声明、方法、访问符、属性或参数上。下面是一些常见的装饰器示例:1.类装饰器类装饰器用于类声明之前,用来监视、修改或替换类定义。functionsealed(constructor:Function){Object.seal(constructor);Object......
  • VLM-OCR-Demo:一个使用VLM用于OCR任务的示例
    https://www.cnblogs.com/mingupupu/p/18594592 前言上一篇文章TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面中我们构建了一个方便使用TesseractOCR的用户界面,今天构建一个类似的界面,使用SemanticKernel接入视觉模型,测试一下用视觉模型做OCR任务的效果。在......
  • VLM-OCR-Demo:一个使用VLM用于OCR任务的示例
    前言上一篇文章TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面中我们构建了一个方便使用TesseractOCR的用户界面,今天构建一个类似的界面,使用SemanticKernel接入视觉模型,测试一下用视觉模型做OCR任务的效果。在之前的文章使用Tesseract进行图片文字识别的总结中......
  • 如何使用YOLOv8训练自动驾驶路面分类模型。涵数据集准备、模型训练、等步骤,并提供自动
    自动驾驶路面分类数据集,按照不同的天气条件,即干燥、湿润、水上、新雪、融化的雪和冰。不同的道路材料属性包括沥青、混凝土、泥浆和碎石。不同的道路平整性分为光滑、轻微不平和严重不平。共27类,37万张图像,13GB数据好的,让我们从数据集准备开始,逐步介绍如何使用深度学习框......
  • 如何使用yolov8纽扣电池缺陷检测数据集进行训练,并提供详细的步骤和代码示例 纽扣电池
    纽扣电池缺陷检测数据集包含3种缺陷类别(脏污、凹陷、划痕),已经划分为训练集和验证集,有xml和txt标签,yolo可用,共1110张类别名称names:0:dirty1:depression2:scratch数据集包含3种缺陷类别(脏污、凹陷、划痕),已经划分为训练集和验证集,并且标注为YOLO格式和VOC格式,亲......
  • 如何使用红外船舶数据集进行训练,步骤和代码示例应该是如何?含 1284 幅红外遥感图像和30
    红外船舶数据集,包含1284幅红外遥感图像和3061个船舶实例。图像大小为500*500。所有图像都经过辐射校准和快速视线光谱超立方体大气分析。共有373个近岸场景,包含924个实例;911个离岸场景,包含2137个实例。已做好标注,有TXT(YOLO)和XML格式红外船舶数据集,包含1284......
  • 如何使用YOLOv5进行玩手机和打电话检测,并提供详细的步骤和代码示例玩手机或者打电话进
    yolov5玩手机打电话检测pytorch框架可以对图片或视频中的人物是否玩手机或者打电话进行识别有数据集,已打好标框,10000张,好的,让我们继续细化如何使用YOLOv5进行玩手机和打电话检测,并提供详细的步骤和代码示例。1.数据集准备1.1.数据集结构确保你的数据集按照以下......
  • ThreeJS入门(185):THREE.OrbitControls 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第185篇入门文章......