当前位置: 首页 > news >正文

localforage的数据仓库、实例、storeName和name的概念和区别

localForage 中,数据仓库实例storeNamename 是核心概念,用于管理底层存储(IndexedDB/WebSQL/localStorage)。以下是详细解释和区别:


1. 数据仓库 (Database)

  • 定义:指底层的物理数据库(如 IndexedDB 数据库)。
  • 作用:实际存储数据的容器,由浏览器管理。
  • 特点
    • 一个域名下可创建多个数据库(通过不同的 name 区分)。
    • 每个数据库可包含多个 Object Store(通过 storeName 区分)。
  • 示例
    myAppDB 是一个 IndexedDB 数据库。

2. 实例 (Instance)

  • 定义:localForage 创建的独立配置对象,用于操作数据。
  • 作用:封装数据库的配置和操作方法(如 getItem/setItem)。
  • 特点
    • 通过 createInstance() 创建多个独立实例。
    • 每个实例有独立的配置(namestoreName 等)。
    • 实例间数据隔离(除非使用相同的 namestoreName)。
  • 示例
    const userStorage = localforage.createInstance({name: "myAppDB",storeName: "users"
    });
    

3. name (数据库名称)

  • 定义:数据库的唯一标识。
  • 作用:指定操作哪个底层数据库。
  • 规则
    • 相同 name 的实例共享同一个数据库。
    • 不同 name 的实例访问完全独立的数据库。
  • 示例
    // 操作数据库 "myAppDB"
    localforage.config({ name: "myAppDB" });
    

4. storeName (存储仓库名称)

  • 定义:数据库中的 Object Store(类似数据库表)。
  • 作用:在同一个数据库中隔离不同数据集。
  • 规则
    • 相同数据库(name)下,不同 storeName 的数据互不干扰。
    • 在 IndexedDB 中表现为不同的 Object Store。
  • 示例
    // 在数据库 "myAppDB" 中创建两个独立仓库
    const config = { name: "myAppDB" };
    const userStore = localforage.createInstance({ ...config, storeName: "users" });
    const productStore = localforage.createInstance({ ...config, storeName: "products" });
    

概念关系图

┌───────────────────────┐
│ 数据库 (Database)     │
│ name: "myAppDB"       │
├───────────────────────┤
│   storeName: "users"  │ → userStorage 实例操作的数据
├───────────────────────┤
│   storeName: "products" → productStore 实例操作的数据
└───────────────────────┘

关键区别总结

概念作用类比
数据仓库物理存储容器(IndexedDB 等)银行的金库
实例操作数据库的配置对象银行的不同业务柜台
name数据库的唯一标识金库的名称(如“总行”)
storeName数据库中的子存储空间(Object Store)金库中的保险箱编号

使用场景示例

// 场景:隔离用户数据和系统配置
const userStorage = localforage.createInstance({name: "appData",storeName: "user" // 存储用户数据
});const configStorage = localforage.createInstance({name: "appData",storeName: "config" // 存储配置
});// 互不影响
userStorage.setItem("name", "Alice"); 
configStorage.setItem("theme", "dark");

通过合理配置 namestoreName,可实现数据的模块化存储,避免命名冲突。

http://www.dtcms.com/a/318795.html

相关文章:

  • VBA之Word应用第四章第一节:段落集合Paragraphs对象(一)
  • mysql全屏终端全量、部分备份、恢复脚本
  • 累加和校验原理与FPGA实现
  • 躺平发育小游戏微信抖音流量主小程序开源
  • 自建纯竞拍系统小程序需准备的事项
  • uniapp/uniappx实现图片或视频文件选择时同步告知权限申请目的解决华为等应用市场上架审核问题
  • TSMaster-C小程序使用
  • uni-app X能成为下一个Flutter吗?
  • Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD
  • MyBatis-Plus Service 接口:如何在 MyBatis-Plus 中实现业务逻辑层??
  • 阿里云部署若依后,浏览器能正常访问,但是apifox和小程序访问后报错链接被重置
  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • [无需 Mac] 使用 GitHub Actions 构建 iOS 应用
  • vue3 el-select 加载内容后 触发事件
  • 「耘•学社」耘少年第五期学能突破导师制领袖特训营,圆满落幕
  • C++与SparkAI实战:高效应用案例
  • Android-Kotlin基础(Jetpack②-Data Binding)
  • 国产化Excel处理组件Spire.XLS教程:使用 C# 将 DataTable 导出为 Excel 文件
  • 嵌入式C语言编程:策略模式、状态模式和状态机的应用
  • 东莞立晟精密硅胶科技有限公司将携重磅产品亮相 AUTO TECH China 2025 广州国际汽车技术展
  • 计算机网络1-4:计算机网络的定义和分类
  • 汽车娱乐信息系统域控制器的网络安全开发方案
  • FPGA实战:用PL端串口发送Hello world
  • 【C/C++】C++引用和指针的对比
  • 29-数据仓库与Apache Hive-创建库、创建表
  • 树莓派安装OpenCV环境
  • 【CDA案例】数据分析案例拆解:解锁数据分析全流程!
  • 微服务、服务网格、Nacos架构与原理
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,绘制新增、编辑模式支持点、线、面的捕捉
  • Linux系统编程--权限管理