新建一个模块文件,初始化 indexedDB
// idb.ts
import { Handle, IDB } from '@vorker/idb'
/** 实例化数据库 */
const db = new IDB({
name: 'indexedDB-name',
storeNames: ['users'] as const,
objectNames: ['globalConfig'] as const,
})
/** 生成数据表的操作方法 */
export const { storeHandles, objectHandles } = new Handle({ db })
在您要使用的地方导入刚才的 storeHandles 方法
// user.ts
import { storeHandles } from './idb.ts'
/** 新建用户 */
const createUser = async () => {
const status = await storeHandles.users.create({ name: 'test' })
if (status) console.log('添加成功')
}
/** 删除用户 */
const deleteUser = async (userId: string) => {
const status = await storeHandles.users.delete(userId)
if (status) console.log('删除成功')
}
/** 更新用户数据 */
const updateUser = async (userId: string) => {
const status = await storeHandles.users.update({ id: userId, name: 'hello' })
if (status) console.log('编辑成功')
}
/** 获取用户列表 */
const getUserList = async () => {
const { list } = await storeHandles.users.getPage({ pageNo: 1, pageSize: 10 })
if (list.length) console.log('前10位用户', list)
}
亦或您想要存储大量数据,而使用类似 localStorage 的 objectHandles 方法
// globalSetting.ts
import { objectHandles } from './idb.ts'
/** 设置主题颜色 */
const setThemeColor = async () => {
const status = await objectHandles.globalConfig.set({ themeColor: 'red' })
if (status) console.log('设置主题色成功')
}
/** 获取主题颜色 */
const getThemeColor = async () => {
const { themeColor } = await objectHandles.globalConfig.get(['themeColor'])
if (themeColor) console.log('获取主题色成功', themeColor)
}