npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@gaothing/indexdb-util

v2.0.8

Published

对浏览器中缓存indexDB的 API 进行封装,让不熟悉其 api 的同学可以快速上手!

Downloads

40

Readme

@gaothing/indexdb-util

该工程主要是对浏览器中缓存indexDB的 API 进行封装,让不熟悉其 api 的同学可以快速上手!

indexDB的介绍

IndexDB是一个基于JavaScript的面向对象数据库,它是HTML5中新增的一个功能,用于在浏览器中提供强大的数据存储与查询能力。IndexDB 的主要优势就是其存储空间通常较大,例如IE的储存上限是250MB,Chrome和Opera则是剩余空间的某个百分比,而Firefox则没有明确的上限。

安装


//npm 

npm install @gaothing/indexdb-util

//pnpm 

pnpm install  @gaothing/indexdb-util

//yarn

yarn add  @gaothing/indexdb-util

API 介绍

引入

直接引入使用的方法有三个: 


  
 import { createIndexDB ,canUse ,getSpace} from '@gaothing/indexdb-util'
  • canUse
* 检查当前浏览器环境是否支持IndexedDB
  • getSpace
* 异步函数getSpace用于获取浏览器存储空间的估计信息。
* 它返回一个对象,包含已使用的存储空间、可用的存储空间以及存储空间的单位。
* 如果浏览器不支持navigator.storage.estimate方法,则会打印警告。
* 
* @returns {Promise<object>} 包含存储空间信息的Promise对象,如果浏览器不支持,则Promise解析为空对象。

const space= await getSpace()
//返回值示例:
{
"quota":146886079.19921875,//存储空间配额
"usage":843.9599609375,//已使用的存储空间
"remaining":146885235.2392578,//剩余存储空间
"unit":"kb"//单位
}
  • createIndexDB 创建 IndexDB实例

创建 IndexDB实例

通过createIndexDB函数直接返回其实例的方法

 import { createIndexDB } from '@gaothing/indexdb-util'
 const {
   getStoreNames,
   getVersion,
   getByAttr,
   add,
   insert,
   getAll,
   updateByKey,
   deleteByKey,
   getByKey,
   clear
   }=await createIndexDB({
    name:'questionnaire', //数据库的名称。
   version:1, //数据库的版本号。默认为1。 数据库的版本号。用于检测和升级数据库。
   storeList:[{//要创建存储对象集合。在数据库中创建或访问对应的对象存储。
     name:'list',//存储对象的名称(表名)。在数据库中创建或访问对应的对象存储。
     keyPath:'id',//存储对象的键路径。默认为'id'。
     autoIncrement:false,//是否自动为存储对象生成唯一递增的键。默认为true。
     indexs:[{key:'name',unique:true},'age']//索引列表,对象中key为索引名称,unique为是否唯一索引:true表示唯一索引  ,字符串为索引名称,unique默认 false
   },{
     name:'kaka'
   }]
 })

getStoreNames

  • 获取当前数据库下的表名称集合
  • @returns {ObjectStoreNameList} 返回一个对象存储名称的列表
const list= getStoreNames()

getVersion

  • 同步返回
  • 获取数据库的版本号
  • @returns {number} 返回数据库的版本号

getByAttr

  • 根据属性值异步获取数据,该属性必须在初创建或版本升级时在 indexs中传入。
  • 该方法用于在给定对象中查找并返回与指定属性值匹配的数据。
  • 它首先验证对象是否为有效对象,然后获取对象的所有属性名,
  • 最后,它通过此属性的值在存储中进行查询。如有重复,返回值最小的那一个
  • @param {Object} obj - 要查询的对象,必须是一个有效对象。
  • @param {String} storeName - 要查询的表名,默认创建的时候的第一个
  • @returns {Promise} - 返回一个Promise,解析为查询结果,如果没有找到匹配的
const res =  await getByAttr({name:'xxx'})

add

  • 向存储中添加新数据(单条数据)
  • @param {Object} data - 需要添加到存储中的数据对象。
  • @param {String} storeName - 要查询的表名
  • @returns {Promise} 返回一个Promise,表示数据添加操作已完成。
 await add({id:1,name:'xxx',...})

insert

 * 异步插入数据到指定的存储中。
 * 此函数用于将给定的数据插入到指定的存储中。它支持插入单个对象或对象数组。
 * 使用了事务处理来确保数据操作的原子性。
 * 
 * @param {Object|Object[]} data - 需要插入的数据,可以是单个对象或对象数组。
  * @param {String} storeName - 要查询的表名,默认创建的时候的第一个
 * @returns {Promise} 返回一个Promise对象,表示数据插入操作的完成。
//插入对象
await insert({id:1,name:'xxx',...})
//多条插入
await insert([{id:1,name:'xxx'},{id:2,name:'xxx2'}])

getAll

* 从存储中获取所有数据。
* @param {String} storeName - 要查询的表名,默认创建的时候的第一个
* @returns {Promise<Array>} 返回一个包含所有数据的数组。

const list =  await getAll()

getByKey

 * 根据ID从存储中获取数据。
 * @param {string|number} key - 需要获取的数据的key的值。key 为创建时传入的 keyPath,没有传则默认为`id`
 * @param {String} storeName - 要查询的表名,默认创建的时候的第一个
 * @returns {Promise<Object|null>} 返回对应ID的数据对象或null(如果找不到)

const res =  await getByKey(1)

deleteByKey

  • 根据ID从存储中删除数据。
  • 如果未提供ID,则不执行任何操作。
  • @param {string|number} key - 需要获取的数据的key的值。key 为创建时传入的 keyPath,没有传则默认为id
  • @param {String} storeName - 要查询的表名,默认创建的时候的第一个
  • @returns {Promise} 返回一个Promise,表示数据删除操作已完成。

const res =  await deleteByKey(1)

updateByKey

 * 根据ID更新存储中的数据。
 * @param {Object} data - 需要更新的数据对象。它应该包含要更新的 key(key 为创建时传入的 keyPath,没有传则默认为`id`)和新数据。
* @param {String} storeName - 要查询的表名,默认创建的时候的第一个
 * @returns {Promise} 返回一个Promise,表示数据更新操作已完成。

const res =  await updateByKey({id:1,name:'updatename'})

clear

  • 清除所有数据
  • @param {String} storeName -表名,默认创建的时候的第一个

await clear('list')