dswda
v1.0.57
Published
浏览器端数据存储解决方案。
Readme
dswda
浏览器端数据存储解决方案。
dswda 提供统一 API 来管理多种浏览器存储后端,当前内置 indexeddb 和 localdb,同时支持对象式 CRUD、SQL 中间件、链式 API、自定义 store、插件和 Worker 执行模式。
安装
npm i dswda如果你要直接写 SQL,再安装:
npm i @dswda/middle-parse-sql30 秒上手
import { createDB, appStart } from 'dswda';
const app = createDB();
const db = appStart(app);
await db.initDB({
dname: 'demo',
version: 1,
tables: [
{
name: 'users',
primaryKey: 'id',
auto: true,
fields: [
{ name: 'id', unique: true, type: 'number' },
{ name: 'name', type: 'string' },
{ name: 'age', type: 'number' }
]
}
]
});
await db.insert({
into: 'users',
values: [
{ id: 1, name: 'Alice', age: 18 },
{ id: 2, name: 'Bob', age: 20 }
]
});
const result = await db.select({
from: 'users',
where: [{ age: { attr: '>', value: 18 } }]
});
console.log(result);SQL 示例
import { createDB, appStart } from 'dswda';
import parseSql from '@dswda/middle-parse-sql';
const app = createDB();
app.addMiddle(parseSql());
const db = appStart(app);
const result = await db.sql(
"select id, name from users where status in ('active', 'archived')"
);
console.log(result);核心能力
- 统一 API:
initDB()、createDB()、select()、insert()、update()、del()、sql() - 内置后端:
indexeddb、localdb - 查询能力:
where、order、limit、groupBy、having、join - 扩展能力:中间件、插件、自定义 store、链式 API。当前内置
@dswda/middle-parse-sql解析中间件。
返回结果
主要 API 返回统一的 ResultData 结构:
type ResultData<R> = {
type: 0 | 1 | -1;
result: R;
};常见结果类型:
- 查询:
Array<T> - 插入:
boolean - 删除:
boolean - 更新:
Array<T>
SQL 支持范围
当前 SQL parser 支持常见 SQL 子集:
SELECT/INSERT/UPDATE/DELETECREATE/ALTER/RENAME/DROPWHERE/JOIN/ORDER BY/LIMITGROUP BY/HAVINGLIKE/IN/BETWEEN/IS NULL
它的定位是浏览器端对象存储方案,不是通用数据库系统,也不追求完整数据库方言兼容。
仓库
- 仓库主页:
dswda/webdb
文档
请参考项目根目录的完整文档:
- 指南:介绍与核心概念
- 指南:快速上手
- 指南:存储引擎
- API 参考:库表操作
- API 参考:数据查询
- API 参考:数据变更
- API 参考:链式 API
- 进阶:中间件机制
- 进阶:SQL 解析中间件
- 进阶:自定义 Store
- 项目:架构与开发
许可证
本项目基于 MIT 发布。
