当前位置: 首页 > 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.lryc.cn/news/612677.html

相关文章:

  • OpenAI 开源模型 gpt-oss 正式上线微软 Foundry 平台
  • [Oracle] CEIL()函数
  • 利用微软SQL Server数据库管理员(SA)口令为空的攻击活动猖獗
  • MySQL中的DDL(一)
  • 直连微软,下载速度达18M/S
  • [2402MT-A] Redbag
  • 从周末去哪儿玩到决策树:机器学习算法的生活启示
  • 《深入解析缓存三大难题:穿透、雪崩、击穿及应对之道》
  • Mysql数据仓库备份脚本
  • 突破距离桎梏:5G 高清视频终端如何延伸无人机图传边界
  • 【完整源码+数据集+部署教程】无人机自然场景分割系统源码和数据集:改进yolo11-RVB
  • 计算机网络1-4:计算机网络的定义和分类
  • 【网络编程】一请求一线程
  • 云原生安全挑战与治理策略:从架构思维到落地实践
  • PyTorch + PaddlePaddle 语音识别
  • 从BaseMapper到LambdaWrapper:MyBatis-Plus的封神之路
  • day44 力扣1143.最长公共子序列 力扣1035.不相交的线 力扣53. 最大子序和 力扣392.判断子序列
  • WEB开发-第二十七天(PHP篇)
  • 笔试——Day31
  • Linux(17)——Linux进程信号(下)
  • 【42】【OpenCV C++】 计算图像某一列像素方差 或 某一行像素的方差;
  • uniapp vue3中使用pinia 和 pinia持久化(没有使用ts)
  • SQLite 创建表
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-文章列表
  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • 《深入浅出 Django ORM:设计理念与惰性查询实现详解》
  • Django 表单:深度解析与最佳实践
  • 上门家教 app 用户端系统模块设计
  • 解锁高效开发:AWS 前端 Web 与移动应用解决方案详解
  • 深度解析:打造一个文件、可持续的Python网络爬虫——以澳洲房地产网站为例