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

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

<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的这些数据存在哪里呢。答案是
在这里插入图片描述
这是我的目录,也就存在硬盘中,50万条简单的数据也就30多M的文件大小。不知道硬盘没有空间时indexedDB是如何处理的。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IndexedDB 是 HTML5 中的一种浏览器本地数据库,它可以在客户端存储结构化数据。相比于传统的 Cookie 和 LocalStorage,IndexedDB 更适合存储大型数据和支持高级查询功能。 下面是一个简单的例子,展示了如何在 JavaScript 中使用 IndexedDB 存储数据: ```js // 打开数据库 let request = indexedDB.open('myDatabase', 1); request.onerror = function(event) { console.log('数据库打开报错'); }; request.onsuccess = function(event) { let db = request.result; console.log('数据库打开成功'); // 存储数据 let transaction = db.transaction(['customers'], 'readwrite'); let objectStore = transaction.objectStore('customers'); let customer = { name: 'John Doe', email: '[email protected]' }; let request = objectStore.add(customer); request.onerror = function(event) { console.log('数据存储失败'); }; request.onsuccess = function(event) { console.log('数据存储成功'); }; }; request.onupgradeneeded = function(event) { let db = event.target.result; // 创建一个对象仓库 let objectStore = db.createObjectStore('customers', { keyPath: 'id', autoIncrement:true }); // 定义对象仓库中的数据结构 objectStore.createIndex('name', 'name', { unique: false }); objectStore.createIndex('email', 'email', { unique: true }); console.log('数据库升级成功'); }; ``` 这个例子中,我们首先打开了一个名为 `myDatabase` 的数据库,并创建了一个名为 `customers` 的对象仓库。然后,我们向 `customers` 对象仓库中添加了一个名为 `John Doe` 的客户。最后,我们通过 `console.log` 输出了一些信息,以便确认操作是否成功。 需要注意的是,如果数据库版本号发生变化,就会触发 `onupgradeneeded` 事件,我们可以在这个事件中创建新的对象仓库或者更新已有的对象仓库。 另外,IndexedDB 是异步 API,因此我们需要通过回调函数来获取操作结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值