文档
https://www.npmjs.com/package/@michaelray/indexdb
yarn add @michaelray/indexdb
init.ts
import { init } from "@michaelray/indexdb";
export const initDb = async () => {
await init({
dbName: "books", // 数据库名称
version: 2, // 版本号
tables: [
{
tableName: "bookRackList", // 表名
option: {keyPath: "id", autoIncrement: true}, // 指明主键为id
indexs: [ // 数据库索引
{
key: "id",
option: {
unique: true
}
},
{
key: "name"
}
]
}
]
})
}
export type Rack = {
name: string
id?: number
}
vue demo
import { onMounted } from "vue";
import {
initDb,
Rack
} from "@/db/init";
import { getInstance } from "@michaelray/indexdb";
onMounted(async () => {
await initDb();
{
// 插入一条数据(Rack是泛型)
await getInstance().insert<Rack>({
tableName: 'bookRackList',
data: {
name: '测试',
}
})
}
{
const info = await getInstance().update({
tableName: 'bookRackList',
condition: item => item.id === 2,
handle: (r:any) => {
r.name = '测试修改';
}
})
console.log('[update]info', info)
}
{
await getInstance().updateByPrimaryKey({
tableName: 'bookRackList',
value: 1,
handle: (r:any) => {
r.name = '测试修改2';
}
})
}
// 删除
{
// await getInstance().delete({
// tableName: 'bookRackList',
// condition: (item:any)=> item.name === '测试',
// })
// await getInstance().delete_by_primaryKey({
// tableName: 'bookRackList',
// value: 5
// })
// await getInstance().delete_table('bookrackList')
// await getInstance().delete_db('books')
}
{
const info = await getInstance().queryAll({
tableName: 'bookRackList'
});
console.log('info', info)
// 异步
getInstance().queryAll({
tableName: 'bookRackList'
}).then(d=>{
console.log('d=', d)
});
}
{
const info = await getInstance()
.queryByKeyValue({
tableName: 'bookRackList',
key: 'name',
value: '测试修改'
})
console.log('info', info)
}
})