dexie.js的使用

官网地址:http://dexie.org/docs/Tutorial/Getting-started

主要介绍初始化后如何获得indexedDB的version

  1. 如果浏览器中不存在数据库时,直接创建数据库

    var db = new Dexie(dbName);
    window.db = db;
    //无数据时,默认version为1,须是db.close();的时候设置
    db.version(1).stores();

  2. 浏览器中存在数据库时,需先找到其version的,再根据version来修改或者更新数据库,获取当前浏览器的数据库的version:

 db = new Dexie(dbName);
          db.open().then(result => {
            //打开成功后,将version存下来
            version = db.verno;
            resolve(db);
          })

列表内容

  1. 对Dexie.js中exists的理解
    官网说明:
You normally won’t need this method! Dexie will automatically detect if database creation or upgrade is needed. The following checks are made withing db.open():

If database does not exists, Dexie will create it automatically.
If database exists but on a previous version, Dexie will upgrade it for you.
If database exists on the declared version, Dexie will just open it for you.

和db.open()配合使用,new Dexie(“dataName”):database不存在时,自动创建,database存在但是先前的版本就升级,database存在且定义当前的版本则打开它
4.具体可见如下简单的demo

<html>
<head>
  <meta charset="utf-8">
  <script src="https://unpkg.com/dexie/dist/dexie.js"></script>
  <script>
    //当前的indexedDB的version
    var version = 1;
    var dataBase;
    createDB().then(db => {
      dataBase = db;
      version = db.verno;
      alert("创建数据库成功,当前版本:" + db.verno);
    });

    //获取当前的version
    function createDB(dbName) {
      dbName = dbName || 'zq-dataBase';
      //調用創建数据库的方法,如果dbName名的不存在则会创建,若已有了,则会将现有的数据库赋值上
      var db = new Dexie(dbName);
      window.db = db;
      //无数据时,默认version为1,须是db.close();的时候设置
      db.version(version).stores();
      //promise函数
      return new Promise(((resolve, reject) => {
        //打开数据库时,会判断当前version值是否大于已经存在的version值,若大于则会upgrade即升到最高版本
        db.open().then(result => {
          //打开成功后
          version = db.verno;
          resolve(db);
        }).catch('VersionError', e => {
          //若所设version小于当前的version,则会报versionError,此时
          //关闭后
          db.close();
          //重新创建数据库,此时不设置db.version(version).stores();,会将当前的version设置为当前的
          db = new Dexie(dbName);
          db.open().then(result => {
            //打开成功后,将version存下来
            version = db.verno;
            resolve(db);
          }).catch(e => {
            reject("failure")
            console.error(e);
          })
        }).catch(e => {
          reject("failure")
          console.error(e);
        });
      }));
    }

    //给数据库创表和修改version
    function addTables() {
      //设置表名
      dataBase.close();
      Dexie.delete('zq-dataBase');
      version = (version * 10 + 1)/10;
      dataBase = new Dexie('zq-dataBase');
      dataBase.version(version).stores({
        friends: "++id,name,age,isCloseFriend",
        car: "++id,band,color,seats"
      });
      dataBase.open().then(result =>{
        alert("修改版本成功,当前的version:"+dataBase.verno);
      });
    }


    //删除数据库表
    function deleteTables() {
      Dexie.delete('zq-dataBase');
      version = 1;
    }

    //获得表数据
    function getData() {
       var list = document.getElementById("list");
       var dataList = dataBase.tables;
       var ulnode = document.createElement("ul");
       console.log(dataList,"----------");
       for(var i = 0;i < dataList.length;i++){
         var li = document.createElement("li");
         li.innerHTML = dataList[i].name;
         ulnode.appendChild(li);
       }
       list.appendChild(ulnode);
    }

  </script>
  <style>
    .content{
      display: flex;
      display: -webkit-flex;
      flex-direction: column;
      width: 400px;
      height: auto;
      background-color: lightgrey;
    }
    .content .item{
      width: 200px;
      height: 100px;
      margin: 10px;
    }
    .content .item button{
      width: 200px;
      height: 100px;
    }
    .content .left{
      background-color: rebeccapurple;
    }
    .content .middle{
      background-color: aqua;
    }
    .content .right{
      background-color: burlywood;
    }
  </style>
</head>
<body>
<div class="content">
  <div class="item left">
    <button onclick="addTables()">改变数据库</button>
  </div>
  <div class="item middle">
    <button onclick="deleteTables()">删除数据库</button>

  </div>
  <div class="item right">
    <button onclick="getData()">获取数据库表</button>

  </div>
</div>

<div id="list"></div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值