浅谈indexedDB/indexedDB数据实际储存的位置

ApiPost-宣博文 前端 2020-09-23

这里写了一个简单的数据库插入的测试。

<body>
    <button onclick="dbTest()">db测试</button>
</body>
<script>
    var db;

    var dbVersion = 1; // 全局的indexedDB数据库实例。

    // 2\. 通过IDBFactory接口的open方法打开一个indexedDB的数据库实例
    // 第一个参数: 数据库的名字,第二个参数:数据库的版本。返回值是一个:IDBRequest实例,此实例有onerror和onsuccess事件。
    let request = indexedDB.open("admin", dbVersion);


    // 打开数据库成功后,自动调用onsuccess事件回调。
    request.onsuccess = function (e) {
        console.log("开启成功success");
        db = e.target.result; // 获取到 demoDB对应的 IDBDatabase实例,也就是我们的数据库。
        db.onversionchange = () => {
            db.close();
        }
    };

    // 打开数据库失败
    request.onerror = function (e) {
        console.log("开启db失败" + e.currentTarget.error.message);
    };

    // 第一次打开成功后或者版本有变化自动执行以下事件:一般用于初始化数据库。
    request.onupgradeneeded = function (e) {
        console.log("版本修改了!");
        db = e.target.result;
        if (db.objectStoreNames.contains("users")) {
            db.deleteObjectStore("users")
        }
        db.createObjectStore("users", {
            keyPath: "username"
        })
        console.log('数据库版本更改为: ' + dbVersion);
    };
    let user = {
        username: '111007',
        phone: '189111833',
        address: 'aicoder.com'
    };

    function dbTest() {
        for (let index = 0; index < 10000; index++) {
            user.username = parseInt(user.username) + 1
            // 创建一个事务,类型:IDBTransaction,文档地址: https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction
            let transaction = db.transaction("users", "readwrite"),
                // 通过事务来获取IDBObjectStore
                store = transaction.objectStore("users"),
                result1 = store.add(user);
            result1.onsuccess = (e) => {
                console.log("1111success");
            }
        }
    }
</script>

浅谈indexedDB/indexedDB数据实际储存的位置

这里可以看到自己定义的版本信息等

浅谈indexedDB/indexedDB数据实际储存的位置

里面可以看到我们具体存的对象,上面是一共多少条。

值得一提的是,indexedDB的这些数据存在哪里呢。答案是

浅谈indexedDB/indexedDB数据实际储存的位置

这是我的目录,也就存在硬盘中,50万条简单的数据也就30多M的文件大小。不知道硬盘没有空间时indexedDB是如何处理的。

Apipost 私有化火热进行中

评论