初识IndexedDB【Nosql】上

一,什么是IndexedDB?

IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。
IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。
总结:

  1. indexedDB是一个非关系型数据库
  2. 它不需要我们去写一些特定的SQL语句来对数据库进行操作
  3. 它是NoSQL的,数据形式使用的json

二,关系型数据库和非关系型区别

关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
ps:
实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。

三,indexedDB的特性

  1. indexedDB没有表的概念,而是使用objectStore。

  2. 一个数据库中可以包含多个objectStore

  3. objectStore是一个灵活的数据结构,可以存放多种类型数据,也就是说一个objectStore相当于一张表,里面储存的每条数据和一个键相关。

  4. 我们可以使用每条记录中的某个字段作为键值(keyPath),也可以使用自动生成的递增数字作为键值(keyGenerator),也可以不指定。

  5. 选择键的类型不同,objectStore可以存储的数据结构也有差异

四,创建数据库

// 打开数据库,若没有则会创建
    const request = indexedDB.open(dbName, version);

4.1,回调

打开成功:

// 数据库打开成功回调
    request.onsuccess = function (event) {
      db = event.target.result; // 数据库对象
      console.log("数据库打开成功");
      resolve(db);
    };

打开失败:

// 数据库打开失败的回调
    request.onerror = function (event) {
      console.log("数据库打开报错");
    };

数据库有更新时候的回调:

 request.onupgradeneeded = function (event) {
      // 数据库创建或升级的时候会触发
      console.log("onupgradeneeded");
      db = event.target.result; // 数据库对象
      var objectStore;
      // 创建存储库
      objectStore = db.createObjectStore("signalChat", {
        keyPath: "sequenceId", // 这是主键
        // autoIncrement: true // 实现自增
      });
      // 创建索引,在后面查询数据的时候可以根据索引查
      objectStore.createIndex("u_id", "u_id", { unique: false }); 
    };

猜你喜欢

转载自blog.csdn.net/weixin_52908342/article/details/123832955