Skip to content

HondryTravis/TinyDB

Repository files navigation

TinyDB

easy to use multi-table indexeddb lib

Document

中文文档 zh-CN

查看 demo

🌟 quick start dev

  # start
  yarn 
  # then
  gulp

🔨 install

<script src="https://unpkg.com/browse/[email protected]/dist/tinydb.global.js"></script>

or

yarn instal -D web-tinydb

Setup

⚙ init config

初始化配置

import { TinyDB } from 'web-tinydb'

const tables = [
  {
      name: "table_student",
      primaryKey: "id",
      autoIncrement: true,
      indexs: [{
          index: "id",
          relativeIndex: "id",
          unique: true
        },
        {
          index: "name",
          relativeIndex: "name",
          unique: false
        },
        {
          index: "school",
          relativeIndex: "school",
          unique: false
        }
      ]
    },
  ]

const test = TinyDB.of()

test.setup({
    dbName: 'test',
    version: 1
})

async function init() {
  const result = await test.createTable(tables)
  console.log(result)
}

init()

then you can checkout you local indexeddb

insert record

插入数据

async function test_insert() {
    await test.insert('table_student', {
      name: 'lee1',
      school: 'Github1',
    })
    await test.insert('table_student', {
      name: 'lee2',
      school: 'Github2',
    })
    await test.insert('table_student', {
      name: 'lee3',
      school: 'Github3'
    })
    await test.insert('table_student', {
      name: 'lee4',
      school: 'Github4'
    })
    await test.insert('table_student', {
      name: 'lee5',
      school: 'Github5'
    })
  }
test_insert()

getAll

获得选中表格所有数据

  async function test_getAll() {
    const result = await test.getAll('table_student')
    console.log(result)
  }
  // test_getAll()

some

获取一些数据,lower <= rang <= upper

  async function test_some() {
    const result = await test.some('table_student', {
      index: 'id',
      lower: 1,
      upper: 3
    })
    console.log(result)
  }
  // test_some()

updateRecord

更新数据

  async function test_update() {
    const newData = {
      name: 'lee11'
    }
    const result = await test.updateRecord('table_student', {
      index: 'id',
      value: 1
    }, newData)
    console.log(result)
  }
  // test_update()

getByPrimaryKey

通过主键检索数据

  async function test_getByPrimaryKey() {
    const result = await test.getByPrimaryKey('table_student', 3)
    console.log(result)
  }
  // test_getByPrimaryKey()

getByIndex

通过创建的索引检索数据

  async function test_getByIndex() {
    const result = await test.getByIndex('table_student', {
      index: 'id',
      value: 2
    })
    console.log(result)
  }
  // test_getByIndex()

deleteRecord

删除记录,通过创建的索引删除

  async function test_deleteRecord() {
    // use index
    const result = await test.deleteRecord('table_student', {
      index: 'id',
      value: 6
    })
    // use primaryKey
    const result = await test.deleteRecord('table_student', 4)
    console.log(result)
  }
  // test_deleteRecord()

deleteDatabase

删除数据库

  async function test_deleteDatabase() {
    const result = await test.deleteDatabase('test')
    console.log(result)
  }
  // test_deleteDatabase()

clearTableRecord

清除表格数据

  async function test_clearTableRecord() {
    const result = await test.clearTableRecord('table_student')
    console.log(result)
  }
  // test_clearTableRecord()

deleteTable

删除表格

  async function test_deleteTable() {
    const result = await test.setVersion(3).deleteTable('table_delete')
    console.log(result)
  }
  // test_deleteTable()