html5 indexdb 存储插件

本文介绍了一种浏览器本地存储解决方案,通过封装复杂的原生IndexDB操作,提供了一个简单易用的Driver类。该类支持数据库操作如打开、创建表、插入、选择、更新和删除数据等,适用于大量数据存储场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

indexDB

浏览器本地存储,使用indexDB
当少量数据存储可以使用localStorage满足要求Storage操作
当数据量更大时localStorage存储操作影响性能,这时候可以使用indexDB,原生indexDB使用复杂度较高,因此对常用的操作做了个封装,更方便操作
项目地址

API

constructor(name, version?)
name: 数据库名字
version: 数据库版本 默认1
eg: var driver = new Driver('database')

Driver.prototype.open

打开数据库连接 返回promise对象 在resolve中可以创建表或者删除表 
driver.open().then(() => {
    driver.createTable({
        name: 'table',
        primaryKey: 'key',
        indexes: [
            {name: 'name_index', column: 'key', unique: true},
        ],
    })
})
Driver.prototype.insert(table, data)
table: 表名
data: 需要插入的数据 obj or array
eg: driver.insert({key: 'key', name: '', ...})
Driver.prototype.select(table, keyRange?, limit?)
table: 表名
keyRange: KeyRange 包含多种比较操作
limit: 取出记录数
eg: driver.select('table', keyRange.eq('key'), 1).then(rs => console.log(rs))
Driver.prototype.selectByKey(table, key)
table:表名
key: 主键
eg: driver.selectByKey('key').then(rs => console.log(rs))
Driver.prototype. count (table, keyRange?)
根据条件统计记录数
table: 表名
keyRange: @see select
eg: driver.count('table').then(size => console.log(size))
Driver.prototype. update (table, modify, where?)
 数据更新,如果数据不存在则新增
 table: 表名
 modify: 修改的对象
 where:条件
 eg: driver.update('table', {name: 'xxxx'}, {key: 'key'})
Driver.prototype.delete (table, key)
table: 表名
key: 主键
根据主键删除
eg: driver.delete('table', 'key')
Driver.prototype.truncate(table)
清空某张表
table:表名

示例

const driver = new Driver('pallet', 1);
driver.on("process", function (state) {
    console.log(state)
})
driver.open().then(function () {
    var arrPlayers = []
    for(let i=0; i<100; i++) {
        arrPlayers.push({
            name: `韩梅梅${i}`,
            sex: `女${i}`
        })
    }
    driver.createTable({
        name: 'player',
        primaryKey: 'id',
        autoIncrement: true,
        indexes: [
          {name: 'name_index', column: 'name', unique: true},
        ],
        data : arrPlayers
    })
})

function select(){
    driver.select('player').then(rs => console.log(rs))
}

function insert(){
    driver.insert('player', {name:'xxx', sex: 'qqq'})
}

function update(){
    driver.update('player', {name:'xxx', sex: 'qqq'}, {key: 2})
}

function delete(){
    driver.delete('player', 2)
}

function truncate(){
    driver.truncate('player')
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值