1.0.1 • Published 3 years ago

aomd-web-db v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

webDB

  • 简易封装 接口均采用 Promise 一步操作
  • 支持 增删改查(以及模糊查询)
  • 使用 npm i aomd-web-db

events


nameParametersDescription
init...初始化
upgradeneeded...indexedDB 对应的upgradeneeded
createObjectStore...创建存储表
deleteObjectStore...删除存储表
error...错误
get...取数据时
set...存数据时
del...删除数据时
clear...清楚表时
search...查询时
close...关闭数据库时

methods


nameDescription
getInstance(option?: WebDBOption): WebDB;单例获取 WebDB实例
init(): Promise;初始化
deleteDatabase(name: string): boolean;删除 indexedDB 库
createObjectStore(tableName: string, option?: CreateObjectStoreOption): IDBObjectStore;创建表
deleteObjectStore(tableName: string): boolean;删除表
getObjectStore(tableName: string, type?: transactionMode): IDBObjectStore;获取表事务操作
getIndexNames(tableName: string): DOMStringList获取所有 索引名称
saveKey(tableName: string, entity: any, key?: number | string): Promise<ReturnEntity>;通过 key 设置数据
getByKey(tableName: string, key: number | string): Promise<ReturnEntity>;通过 key 获取数据
getByIndexName(tableName: string, indexName: string, value: number | string): Promise<ReturnEntity>;通过 索引 获取数据
getByIndexNameAll(tableName: string, indexName: string, value: number | string, limit?: number): Promise<ReturnEntity>;通过 索引 获取所有数据
delByKey(tableName: string, key): Promise<ReturnEntity>;通过 索引 删除数据
clear(tableName: string): Promise<ReturnEntity>;清除单一表的所有数据
close(): Promise<ReturnEntity>;销毁 WebDB 实例
fuzzySearch(tableName: string, indexName: string, value: number | string): Promise<ReturnEntity>;模糊查询
on(eventName: EventName, cb: (en?: ReturnEntity) => unknown): void;监听事件
off(eventName: EventName, cb: (en?: ReturnEntity) => unknown): void;解除监听

model

WebDBOption

WebDBOption {
  name?: string;
  version?: number;
}

CreateObjectStoreOption

CreateObjectStoreOption {
  keyPath?: string;
  autoIncrement?: boolean;
}

ReturnEntity

ReturnEntity {
  // 调用事件
  eventName: string;
  // 调用表
  tableName: string;
  // 调用参数
  option: object;
  // 取出的数据
  entity: any;
}

example


//@ts-check
import { WebDB } from '../src/WebDB'

var db = WebDB.getInstance({ name: 'hiwebpage', version: 1 })

// db.deleteDatabase('hiwebpage')

db.on('upgradeneeded', () => {

    db.deleteObjectStore("test");

    // 创建一个表
    var objectStore = db.createObjectStore("test");

    // 此处最好取一样名称
    objectStore.createIndex("id", 'id')

    console.log('upgradeneeded')

})

db.init().then(() => {
    // 获取所有索引
    db.getIndexNames('test')

    // 根据下标进行创建 ro 更新
    db.saveKey('test', { name: 'xj', id: 4399 }, '5')
    db.saveKey('test', { name: 'xj2', id: 4399 }, '6')
    db.saveKey('test', { name: 'xj3', id: 4399 }, '7')
    db.saveKey('test', { name: 'xj4', id: '4399' }, '8')
    db.saveKey('test', { name: 'xj5', id: '4399' }, '9')

    // 更新 9 这个key
    db.saveKey('test', { name: 'xj2', id: 'id999' }, '9')


    // 自增长
    // db.saveKey('test', { id: 'xj1' })

    // 通过 key 获取单个
    db.getByKey('test', '8').then((data) => {
        console.error('getByKey', data.entity);
    })

    // 通过索引获取 一个 重复多个也取一个
    db.getByIndexName('test', 'id', 4399).then((data) => {
        console.error('getByIndexName', data.entity);
    })

    // 通过索引获取多个 limit可以筛选
    db.getByIndexNameAll('test', 'id', 4399).then((data) => {
        console.error('getByIndexNameAll', data.entity);
    })

    db.getByIndexNameAll('test', 'id', 4399, 1).then((data) => {
        console.error('getByIndexNameAll:limit:1', data.entity);
    })

    // 模糊查询
    db.fuzzySearch('test', 'name', 'x').then((data) => {
        console.error('fuzzySearch', data.entity);
    })

    // 根据key删除
    db.delByKey('test', '5').then((data) => {
        console.error('delByKey', data.entity);
    })

    // 清理表
    // db.clear('test')

})

示例图片

1.0.1

3 years ago

1.0.0

3 years ago