Vue.jsvueECMAScript6 and ECMAScript7

ES6(五)用Promise封装一下IndexedDB(下)

2021-02-03  本文已影响0人  自然框架

功能设计

再重温一下:
如图:


功能设计

功能测试

封装完毕,要写个测试代码来跑一跑,否则怎么知道到底好不好用呢。
于是写了一个比较简单的测试代码。

建立对象库

dbOpen().then(() =>{
    // 建表初始化之后,获取全部对象
    getAll()
})

然后我们按F12,打开Application标签,可以找到我们建立的数据库,如图:


建数据库.png

我们可以看一下索引的情况,如图:


02索引.png

添加对象

        addObject('blog',{
          id: new Date().valueOf(),
          groupId: 1,
          title: '这是三个博客',
          addTime: '2020-10-15',
          introduction: '这是博客简介',
          concent: '这是博客的详细内容<br>第二行',
          viewCount: 1,
          agreeCount: 1
        }).then((data) => {
          re.value = data
          getAll()
        })

点右键可以刷新数据,如图:


03刷新.png

更新后的数据,如图:


04新数据.png

修改对象

        updateObject('blog',blog).then((data) => {
          re.value = data
          getAll()
        })

删除对象

        deleteObject('blog',id).then((data) => {
          re.value = data
          getAll()
        })

清空仓库里的对象

        clearStore('blog').then((data) => {
          re.value = data
          getAll()
        })

删除对象仓库

        deleteStore('blog').then((data) => {
          re.value = data
          getAll()
        })

删除数据库

         deleteDB('dbTest').then((data) => {
          re.value = data
          getAll()
        })

查询功能

       // 查询条件
      const findInfo = {
        indexName: 'groupId',
        indexKind: '=', // '>','>=','<','<=','between',
        indexValue: 1,
        betweenInfo: {
          v1:1,
          v2:2,
          v1isClose:true,
          v2isClose:true,
        },
        where: (object) => {
          if (findKey.value == '') return true
          let re = false
          if (object.title.indexOf(findKey.value) >= 0) {
            re = true
          }
          if (object.introduction.indexOf(findKey.value) >= 0) {
            re = true
          }
          if (object.concent.indexOf(findKey.value) >= 0) {
            re = true
          }
          return re
        }
      }

      const find = () => {
        findObject('blog', findInfo).then((data) => {
          findRe.value = data
        })
      }

全部代码就不贴了,感兴趣的话可以去GitHub看。
贴一个折叠后的效果图吧:


05代码截图.png

就是先把相关的功能和在一起,写一个操作类,然后在setup里面应用这个类就可以了,然后写点代码把各个类关联起来即可。

这样代码好维护多了。

小结

功能不是很完善,目前是自己够用的程度。
本来想用纯js来写个使用方式的,但是发现还是用vue写着方便,于是测试代码就变成了vue的形式。

源码

https://github.com/naturefwvue/nf-vue-cnd/tree/main/cnd/LocalStore/IndexedDB

在线演示

https://naturefwvue.github.io/nf-vue-cnd/cnd/LocalStore/IndexedDB/

参考资料

官网:https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API

阮一峰的网络日志:http://www.ruanyifeng.com/blog/2018/07/indexeddb.html

谦行: https://www.cnblogs.com/dolphinX/p/3416889.html

上一篇下一篇

猜你喜欢

热点阅读