☰
JavaScript的IndexedDB的基本使用
2026/10/14 12:15:58 网站建设 项目流程

IndexedDB的使用

indexedDB的底层是sqlite3实现的
如何获取一个数据库实例呢?通过indexedDB.open(name, version);获取一个请求,类型是IDBOpenDBRequest,当请求成功的时候触发回调。返回一个数据库实例,类型为IDBDatabase。https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API

/** * * @returns {Map<string, number>} */constgetDBVersionMap=async()=>{constmap=newMap();constdbs=awaitindexedDB.databases();dbs.forEach(val=>{map.set(val.name,val.version);});returnmap;}/** * * @param {string} name * @returns {Promise<IDBDatabase>} */constgetIndexedDB=async(name)=>{constmap=awaitgetDBVersionMap();constversion=map.has(name)?map.get(name)+1:1;constreq=indexedDB.open(name,version);returnnewPromise((resolve,reject)=>{req.addEventListener("success",e=>{/** * @type {IDBDatabase} */constdb=e.target.result;db.addEventListener("versionchange",e=>{db.close();});resolve(db);});req.addEventListener("error",e=>{reject(e);})});}

为什么db需要注册一个versionchange的事件,并且关闭实例呢,因为当数据库升级的时候,旧版本的实例没有关闭的话,新版本就无法创建,阻塞住。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询