indexedDB的基本操作

2024-01-24 07:28
文章标签 基本操作 indexeddb

本文主要是介绍indexedDB的基本操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

indexedDB概述

IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。

<script>import { onMounted } from 'vue'export default {name: 'indexedDB',//测试indexedDBsetup() {let db = null;function initData() {// 打开数据库// 打开数据库:如果数据库不存在,则新建数据库// 参数1:数据库名称// 参数2:数据库版本号const request = window.indexedDB.open('test', 5)request.onerror = function (event) {console.log('数据库打开报错');}request.onsuccess = function (event) {console.log('数据库打开成功');console.log(event.target);db = event.target.result// let objectStore;// if (!db.objectStoreNames.contains('person')) {//   // 索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值)//   objectStore = db.createObjectStore('person', { keyPath: 'id' });//   objectStore.createIndex('name', 'name', { unique: false });//   objectStore.createIndex('email', 'email', { unique: true });// }db.onerror = function(error){// 全局错误配置console.log('error---------',error)}}request.onupgradeneeded = function (event) {// 新建数据库以后,第一件事是新建对象仓库(即新建表)// 参数1:对象仓库名称// 参数2:设置对象仓库的配置(keyPath和autoIncrement)console.log('建person对象仓库')db = event.target.resultlet objectStore;if (!db.objectStoreNames.contains('person')) {// 索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值)objectStore = db.createObjectStore('person', { keyPath: 'id',autoIncrement: true });objectStore.createIndex('name_1', 'name', { unique: false });objectStore.createIndex('email_1', 'email', { unique: false });objectStore.createIndex('children', 'children', { unique: false });}}}function add() {const datas = [{name: '张三',email: 'zhangsan@example.comn',children: [{ name: 'li', age: 15 }]},{name: '李四',email: 'zhangs111an@example.comn',children: [{ name: 'li', age: 12 }]},]const objectStore = db.transaction(['person'],'readwrite').objectStore('person');datas.forEach(item => {objectStore.add(item).onsuccess = function (event) {console.log('数据写入成功------');}})}function modify() {const request = db.transaction(['person'], 'readwrite').objectStore('person').put({id: 2, name: '张三22', email: 'zhangsan@example.comn', children: [{ name: 'zhao', age: 13 },{ name: 'qian', age: 14 },]});request.onsuccess = function (event) {console.log('数据修改成功------');};request.onerror = function (event) {console.log('数据修改失败');}}function del() {const request = db.transaction(['person'], 'readwrite').objectStore('person').delete(1);request.onsuccess = function (event) {console.log('数据删除成功------');};request.onerror = function (event) {console.log('数据删除失败');}}function search() {// 按主键查询const request = db.transaction(['person'], 'readwrite').objectStore('person').get(2);request.onsuccess = function (event) {console.log('数据seach成功------',event.target.result);};request.onerror = function (event) {console.log('数据seach失败');}}function search2() {// 遍历所有const request = db.transaction(['person'], 'readwrite').objectStore('person').openCursor()  //默认只返回一条,cursor.continue 调用所有request.onsuccess = function (event) {const cursor = request.resultif (cursor) {console.log('数据search2成功result',cursor.value);cursor.continue()}};request.onerror = function (event) {console.log('数据search2失败');}}function searchIDBKeyRange() {// 根据索引:name_1:【'张三','张三'】查找// const range = IDBKeyRange.bound('张三','张三'); //同时指定上下限// const request = db.transaction(['person'], 'readwrite')//   .objectStore('person').index('name_1').openCursor(range)  //默认只返回一条,cursor.continue 调用所有// const request = db.transaction(['person'], 'readwrite')// .objectStore('person').index('name_1').openCursor(range)  //默认只返回一条,cursor.continue 调用所有// 根据主键【1,2】查找const range = IDBKeyRange.bound(1,2); //同时指定上下限const request = db.transaction(['person'], 'readwrite').objectStore('person').openCursor(range)  //默认只返回一条,cursor.continue 调用所有request.onsuccess = function (event) {const cursor = request.resultif (cursor) {console.log('数据IDBKeyRange成功result',cursor.value);cursor.continue()}};request.onerror = function (event) {console.log('数据search2失败');}}onMounted(() => {initData()})return {add,del,modify,search,search2,searchIDBKeyRange}}}</script><template><div id="three" width="1000" height="800"></div><div>测试indexedDB<button @click="add">新增</button><button @click="del">删除</button><button @click="modify">修改</button><button @click="search">查询</button><button @click="search2">遍历查询</button><button @click="searchIDBKeyRange">按条件查询</button></div>
</template><style scoped>
</style>

这篇关于indexedDB的基本操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638940

相关文章

MongoDB学习—(3)shell的基本操作

一,删除数据库中的集合文档 命令为 db.[documentName].drop() 二,删除数据库 命令为 db.dropDatabase() 执行该命令时,应该先进入想要删除的数据库中,如 三,shell中的help 我们可以运用shell中的help来查询相关的操作,查询数据库相关的就用db.help(),查询集合相关的就用db.[documentName].help

MongoDB学习—(2)shell的基本操作

一,创建一个数据库 使用use关键字,格式为 use [databasename] 当你这样创建一个数据库时,该数据库只是创建于内存中,只有你对数据库执行一些操作后,数据库才真正的创建,否则如果直接关掉mongodb,数据库在内存中会被删除掉。 二,查看所有数据库 命令为 show dbs Mysql中的命令为show databases,两者有所不同。 三,查看数据库中的现有的文

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将

Github基本操作【学习笔记】

Set Up Git 配置全局用户名 git config --global user.name "Your Name Here" 配置全局邮箱 git config --global user.email "your_email@example.com" 配置全局邮箱 Create A Repo More about repositories Click

git:认识git和基本操作(1)

目录 一、版本控制器 1.安装git 2.创建git本地仓库 3.配置git 二、git操作(1) 1.工作区、暂存区、版本库 2.添加文件 3.查看.git 4.修改文件 一、版本控制器         所谓的版本控制器,就是能让你了解到每一个文件的修改历史。相应的,在企业级开发中,用来记录一个工程的每一次改动和管理版本迭代,同时方便多人协作开发。         g

6.2图的存储及基本操作

6.2.1顺序存储 邻接矩阵法,用一个一维数组存储图中顶点信息,二维数组存储图中边的信息 无向图 1.无向图的邻接矩阵关于对角线对称,可采用压缩存储 2.边数为e,则邻接矩阵中1为2e; 3.第i行or 第i列非零元素之和恰好为顶点i的度数 4.判断是否有边用0,1 5. 有向图 1.关于对角线不对称 2.行表示入度,列表示出度,行+列表示该顶点的度 6.2.2链式存储

MySql数据库基本操作练习

1、创建一个老师表 CREATE TABLE teachers (id INT (10) NOT NULL auto_increment,NAME nvarchar (10) NOT NULL,sex nvarchar (8) NOT NULL,PRIMARY KEY (id)); 2、对teachers表进行查询 SELECT*FROMteachers; 3、查询当前数据库中的所有表

Sqoop部署和基本操作

目录 一、说明二、部署三、常用命令 一、说明 数据导入(Import): Sqoop可以从关系型数据库(如MySQL、PostgreSQL、Oracle等)中抽取数据,并将其导入到Hadoop的HDFS中,存储为各种格式(如文本文件、Avro、Parquet等)供后续处理和分析使用。 导入过程中,Sqoop支持将数据直接导入到Hive表中,从而方便地进行SQL查询和分析。

庞峰Opencv学习(二)--对矩阵结构体CvMat的基本操作

1. CvMat结构体:(注释) typedef struct CvMat{int type; //数据类型以 CV_N{U|S|F}C{1,2,3...}表示int step; //表示一行有多少个字,在32位操作系统中,一个字为4个字节/* for internal use only */int* refcount;int hdr_refcount;union //