关于IndexedDB的操作文档
创始人
2025-06-01 07:53:00
0

IndexedDB是一种客户端NoSQL数据库,它可以在JavaScript中使用键值对存储和检索数据。

## 创建数据库和存储对象 在使用IndexedDB之前,需要先创建一个数据库和一个存储对象。

可以使用下面的方法来创建:

var request = window.indexedDB.open('mydb', 1); //创建数据库request.onerror = function(event) {console.log('Database error: ' + event.target.errorCode); //发生错误};request.onupgradeneeded = function(event) {var db = event.target.result;var objectStore = db.createObjectStore('users', { keyPath: 'id' }); //创建存储对象};request.onsuccess = function(event) { var db = event.target.result; };

在这个示例中,我们使用indexedDB.open方法创建了名为mydb的数据库。

在数据库版本号为1的情况下,我们在onupgradeneeded事件中使用createObjectStore方法创建了名为users的存储对象,并使用id字段作为主键。

## 添加数据 可以使用以下方法向存储对象中添加数据:

var transaction = db.transaction(['users'], 'readwrite'); //开启事务var objectStore = transaction.objectStore('users'); //指定操作存储对象var request = objectStore.add({ id: 1, name: 'Tom', age: 25 }); //添加数据request.onsuccess = function(event) { console.log('Data added.'); };request.onerror = function(event) { console.log('Data not added: ' + event.target.errorCode); };


在这个示例中,我们使用add方法将一条包含id、name和age字段的数据添加到名为users的存储对象中。

## 更新数据 可以使用以下方法来更新存储对象中的数据:


 

var transaction = db.transaction(['users'], 'readwrite'); //开启事务var objectStore = transaction.objectStore('users'); //指定操作存储对象var request = objectStore.put({ id: 1, name: 'Tom', age: 30 }); //更新数据request.onsuccess = function(event) { console.log('Data updated.'); };request.onerror = function(event) { console.log('Data not updated: ' + event.target.errorCode); }; 

在这个示例中,我们使用put方法将一条包含id、name和age字段的数据更新到名为users的存储对象中。

## 删除数据 可以使用以下方法来从存储对象中删除数据:

var transaction = db.transaction(['users'], 'readwrite'); //开启事务var objectStore = transaction.objectStore('users'); //指定操作存储对象var request = objectStore.delete(1); //删除数据request.onsuccess = function(event) { console.log('Data deleted.'); };request.onerror = function(event) { console.log('Data not deleted: ' + event.target.errorCode); };


在这个示例中,我们使用delete方法从名为users的存储对象中删除了id为1的数据。

## 查询数据 可以使用以下方法从存储对象中查询数据:

var transaction = db.transaction(['users'], 'readonly'); //开启只读事务var objectStore = transaction.objectStore('users'); //指定操作存储对象var request = objectStore.get(1); //查询数据request.onsuccess = function(event) {var data = event.target.result;if (data) { console.log(data.id + ' ' + data.name + ' ' + data.age); } };
request.onerror = function(event) { console.log('Data not found: ' + event.target.errorCode); };

在这个示例中,我们使用get方法从名为users的存储对象中查询了id为1的数据,并输出了查询结果。 以上就是IndexedDB的基本操作。需要注意的是,IndexedDB是一种较新的技术,可能不兼容一些旧的浏览器,需要进行兼容性检查。

相关内容

热门资讯

走进小城看消费丨江西资溪:低碳...   夏日时节下午4点,江西省抚州市资溪县大觉山景区漂流终点依然热闹。来自南昌的游客余鑫漂流结束后没有...
【中原晨会0625】市场分析专... 来源:市场资讯 (来源:中原证券研究所) 本期重点研报目录 【中原策略】市场分析:电子半导体领涨 ...
南向资金连买4日!低费率+可月... 6月25日早盘,港股红利资产震荡整理。截至11时14分,港股红利低波ETF招商(520550)下跌0...
618成交破百万!紫荆花用一套... 一年一度的618年中大促,是消费市场的晴雨表,也是品牌间最激烈的角力场。当各大品牌在直播间里铆足了劲...
原创 黄... 2026年6月25日的国际金价已经从前期的5500美元高点跌到4200美元下方,累计跌幅超过22%,...
英伟达CEO:Vera Rub... 截至9:38,中证半导体材料设备主题指数(931743)涨2.36%创新高;权重股中,中微公司涨3....
再被催债16亿!“钢铁大王”戴... 澎湃新闻记者 贺梨萍 因“铁本事件”入狱五年的戴国芳重返钢铁行业,但他并没有完成从阶下囚再到“钢铁大...
周三原油价格下跌 随着美国和伊朗在和平谈判中取得进展,越来越多的油轮公开穿越霍尔木兹海峡,原油在战时的价格上涨已经蒸发...
这种蛋白是大脑衰老的开关 这种蛋白是大脑衰老的开关 清晨,假设一位五十岁左右的王女士发现自己常常把手机放在熟悉的抽屉里又找不到...
信通院牵头算力Token出海生... 盘面上,截至11:04,中证科创创业50指数(931643)涨1.68%,创历史新高;权重股中,芯原...
海外 774 亿营收背后:日本... 文 | 游戏价值论 6月23日,彭博社报道了腾讯正在围绕出售多家日本游戏工作室少数股权开展谈判,包...
餐饮“抢人”大战:把店开到公交... 作者 |餐饮老板内参 内参君 医院、公交站、演唱会…餐饮品牌,正在无孔不入 在北京儿童医院,肯德基...
快讯 | 外资扫货!陈翊庭:港... 港交所行政总裁陈翊庭在接受《中国证券报》专访时指出,国际资本对中国资产的看法已彻底扭转,布局中国市场...
2777.77元!A股“股王”... 25日早盘,昨天创下历史新高的A股“股王”联讯仪器,今天上午继续走强,盘中股价再度刷新历史新高。 截...
原创 今... 欧洲自己的媒体直接下结论,欧盟衰退躲不掉,内部分裂拦不住,现在就连欧洲顶尖工业巨头,都偷偷在用中国的...
黄仁勋股东大会放言:本轮AI基... 在当地时间6月24日的英伟达(NVDA.O)2026年度股东大会上,股东批准了该公司全部10名董事会...
国际油价大跌 新华社消息, 纽约原油期货主力合约价格24日盘中跌破每桶70美元,为伊朗战事爆发以来首次。 市场分析...
马云带队插秧,什么信号? 一场别开生面的“务农”,让外界看到了一个不一样的阿里巴巴。 近日,阿里巴巴合伙人、高德董事长刘振飞在...
全球最大产能,最高丰度达99.... 本文转自【科技日报】; 6月23日,高丰度硼-10同位素技术暨产业化成果发布会在山东省东营市举办,全...
黄金大跳水!金饰克价年内暴跌近... 25日,现货黄金盘中震荡,截至发稿,报3985.070美元/盎司,跌0.17%。 当地时间24日,...