# db **Repository Path**: web_74/db ## Basic Information - **Project Name**: db - **Description**: js 数据库 操作 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JS 数据库调试工具集合 #### 介绍 这是一个 JavaScript 数据库调试工具集合,包含了多种流行的前端数据库/存储库,用于学习和测试不同的数据存储方案。 所有工具都使用相同的数据集 (`data.js`),提供一致的 API 接口,方便对比学习。 #### 支持的数据库库 | 库 | 文件 | 存储方式 | 同步/异步 | 难度 | 特点 | |---|---|---|---|---|---| | **Store2** | [`Store2.html`](Store2.html) | LocalStorage | 同步 | ⭐ | 最简单,只有 get/set 两个方法 | | **LocalForage** | [`LocalForage.html`](LocalForage.html) | IndexedDB | 异步 | ⭐⭐ | API 简单,自动选择最佳存储 | | **AlaSQL** | [`AlaSQL.html`](AlaSQL.html) | 内存 | 同步 | ⭐⭐ | 使用 SQL 语句操作 JavaScript 数据 | | **Lodash** | [`Lodash.html`](Lodash.html) | 内存数组 | 同步 | ⭐⭐ | 链式操作,功能强大 | | **LokiJS** | [`LokiJs.html`](LokiJs.html) | 内存 | 同步 | ⭐⭐ | 轻量级嵌入式数据库 | | **Dexie.js** | [`DexieJs.html`](DexieJs.html) | IndexedDB | 异步 | ⭐⭐ | IndexedDB 封装,API 友好 | | **LowDB** | [`LowDB.html`](LowDB.html) | LocalStorage | 同步 | ⭐⭐ | 基于 Lodash,支持链式操作 | | **NeDB** | [`NeDB.html`](NeDB.html) | 内存 | 异步 | ⭐⭐⭐ | 支持正则查询,类 MongoDB | | **PouchDB** | [`PouchDB.html`](PouchDB.html) | IndexedDB | 异步 | ⭐⭐⭐ | 支持 Mango 查询,可同步 CouchDB | | **Underscore** | [`Underscore.html`](Underscore.html) | 内存数组 | 同步 | ⭐⭐ | 纯函数式操作 | | **Sift.js** | [`SiftJs.html`](SiftJs.html) | 内存数组 | 同步 | ⭐⭐ | MongoDB 风格查询,超轻量 | | **MiniSearch** | [`Minisearch.html`](Minisearch.html) | 内存 | 同步 | ⭐⭐ | 全文搜索引擎,支持模糊匹配 | #### 快速开始 1. **在浏览器中打开任意 HTML 文件** ``` - 最简单:Store2.html - 最实用:DexieJs.html - 最有趣:AlaSQL.html - 链式操作:Lodash.html - 全文搜索:Minisearch.html ``` 2. **按 F12 打开浏览器控制台** 3. **自动执行**:页面加载后会自动初始化并加载数据 4. **手动测试**:在控制台输入函数名并回车 #### 统一 API 接口 所有工具都提供以下相同的函数: ```javascript // 基础操作 initDB() // 初始化数据库 loadData() // 加载数据 // 查询操作 findAll() // 查询所有 findBy({id: 1}) // 条件查询 search('关键词') // 模糊搜索 stats() // 数据统计 // CRUD 操作 addOne({...}) // 新增一条 addBatch([...]) // 批量新增 updateOne(id, {...}) // 更新记录 deleteOne(id) // 删除记录 exportData() // 导出数据 clearAll() // 清空数据 // 其他 chainExample() // 链式操作示例 runTests() // 运行完整测试 ``` #### 使用示例 **Store2 (最简单)** ```javascript // 存储 store.set('games', data) // 读取 const games = store.get('games') // 删除 store.remove('games') ``` **LocalForage (异步存储)** ```javascript // 存储 await localforage.setItem('games', data) // 读取 const games = await localforage.getItem('games') // 删除 await localforage.removeItem('games') ``` **AlaSQL (SQL 操作)** ```javascript // 查询所有 alasql('SELECT * FROM ?', [data]) // 条件查询 alasql('SELECT * FROM ? WHERE id=1', [data]) // 统计 alasql('SELECT COUNT(*) FROM ? GROUP BY status', [data]) ``` **Lodash (链式操作)** ```javascript // 链式查询 _(list) .filter({name:"晋松"}) .sortBy('age') .value() // 直接 filter _.filter(list, {name:"晋松"}) // 排序 _.sortBy(list, 'age') ``` **Sift.js (MongoDB 查询)** ```javascript // MongoDB 风格查询 sift({name: "晋松"})(list) sift({age: {$gt: 25}})(list) ``` **MiniSearch (全文搜索)** ```javascript // 创建索引 const miniSearch = new MiniSearch({ fields: ['name', 'prefix'] }) miniSearch.addAll(data) // 搜索 const results = miniSearch.search('原神') ``` **Dexie.js (IndexedDB)** ```javascript // 查询 await db.table('games').where('id').equals(1).toArray() // 新增 await db.table('games').add({id: 1, name: '游戏'}) // 更新 await db.table('games').update(1, {name: '新游戏'}) ``` #### 文件结构 ``` c:\Users\81001\Desktop\ai\js\db\ ├── README.md # 本说明文件 ├── data.json # 原始数据 ├── data.js # 转换后的数据文件 ├── *.html # 各种数据库实现 (12 个文件) ├── demo\ # 带界面的 CRUD 实现 │ ├── Lodash.html # ⭐ 最简单,推荐入门 │ ├── Sift.html # MongoDB 风格查询 │ ├── Dexie.html # IndexedDB 持久化存储 │ ├── LokiJS.html # 内存数据库 │ └── style.css # 共享样式 └── js\ ├── store2.min.js # Store2 库 ├── localforage.min.js # LocalForage 库 ├── alasql.min.js # AlaSQL 库 ├── lokijs.min.js # LokiJS 库 ├── dexie.min.js # Dexie.js 库 ├── low.min.js # LowDB 库 ├── underscore.min.js # Underscore.js 库 ├── pouchdb.min.js # PouchDB 库 ├── sift.min.js # Sift.js 库 ├── minisearch.min.js # MiniSearch 库 └── data.js # 游戏数据 ``` #### Demo 目录说明 `demo/` 目录包含带图形界面的 CRUD 实现,使用 **Bootstrap 5 + Alpine.js** 构建。 | 文件 | 复杂度 | 特点 | 推荐场景 | |------|--------|------|----------| | **Lodash.html** | ⭐ 最简单 | 标准 Lodash API,代码直观 | 入门学习 | | **Sift.html** | ⭐⭐ | MongoDB 风格查询,代码简洁 | 熟悉 MongoDB 的用户 | | **Dexie.html** | ⭐⭐⭐ | IndexedDB 持久化,异步操作 | 需要数据持久化 | | **LokiJS.html** | ⭐⭐⭐⭐ | 内存数据库,链式查询 | 复杂查询场景 | **推荐顺序:Lodash.html → Sift.html → Dexie.html → LokiJS.html** #### 对比总结 **按简单程度排序:** 1. Store2 ⭐ - 只有 2 个 API 2. LocalForage ⭐⭐ - 3 个异步 API 3. AlaSQL ⭐⭐ - 1 个 SQL 函数 4. Lodash ⭐⭐ - 链式操作 5. Sift.js ⭐⭐ - MongoDB 风格查询 6. Underscore ⭐⭐ - 纯数组操作 7. LokiJS ⭐⭐ - 同步数据库 8. LowDB ⭐⭐ - Lodash 链式操作 9. Dexie.js ⭐⭐ - IndexedDB 友好封装 10. NeDB ⭐⭐⭐ - 异步,支持正则 11. MiniSearch ⭐⭐ - 全文搜索 12. PouchDB ⭐⭐⭐ - 功能最强,支持同步 **按使用场景推荐:** - **简单存储**:Store2、LocalForage - **复杂查询**:Dexie.js、AlaSQL - **链式操作**:Lodash、LowDB - **全文搜索**:MiniSearch - **离线应用**:PouchDB、Dexie.js - **学习用途**:全部尝试,对比学习 #### 注意事项 1. 所有 HTML 文件都使用本地数据 (`js/data.js`),无需服务器 2. 部分库使用 IndexedDB,需要浏览器支持 3. 内存数据库(LokiJS、NeDB、Underscore、Lodash、Sift、MiniSearch)刷新后数据会丢失 4. 持久化数据库(Store2、LocalForage、Dexie.js、PouchDB、LowDB)数据会保存 #### 参与贡献 欢迎添加更多数据库库的实现! 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码(参考现有实现,保持 API 一致) 4. 新建 Pull Request #### 许可证 MIT License