tbdb
v0.0.15
Published
<p align="center"> <img src="docs-src/logo/tbdb-logo.png" alt="TableDB Logo" height="128" /> </p>
Readme
TableDB
A very simple NoSQL database abstraction layer that provides MongoDB-like CRUD APIs, supporting multiple backends including SQLite, MongoDB and IndexedDB.
这个世界上复杂的数据库和 ORM 已经够多了,而我们只想简单地存个东西。
一个非常简单却实用的 NoSQL 数据库抽象层,提供类似 MongoDB 的增删改查 API,支持多种存储后端(SQLite, MongoDB, IndexedDB)。
完全兼容 JavaScript 数据类型
直接存入Date,Map,RegExp,ArrayBuffer,Unint8Array,Blob,File等 JavaScript 类型,取出后数据类型不变,不用额外考虑数据库类型问题。类似 MongoDB 的 NoSQL API
增删改查的接口遵照 MongoDB 设计,例如findOne(),updateMany(),易于上手,可以平滑的从 MongoDB 迁移。切换不同数据库后端
提供 SQLite, MongoDB 等多种数据库适配器,可以方便的切换不同的数据库存储后端。 并且可以在不同数据库间迁移数据,让你可以从 SQLite 开始,当规模变大时迁移到 MongoDB。集成实用方法
内置 “分页”、“游标分页”、“批量遍历”等实用功能。可选功能:
autoMetadata自动元数据(创建时间,修改时间)markDelete标记删除tree目录树存储
安装
$ npm add -D tbdb fzz
fzz是 TableDB 使用的数据类型定义库dto的依赖,可选安装,如果你不需要通过定义 Schema 获得更好的 TypeScript 类型提示,可以不安装。
快速开始
import { defineTable, SQLiteAdapter } from "tbdb"
// 1. 定义 Table,并得到 useTable 函数
let useMemberTable = defineTable({
name: "Member",
adapter: SQLiteAdapter({ filename: "./member.sqlite" }),
})
// 2.使用 useTable 创建 Table 实例
let memberTable = await useMemberTable()
// 3.使用 Table 实例进行数据操作
await memberTable.insertMany([
{
id: "member1",
name: "Alice",
age: 30,
},
])
let members = await memberTable.findMany({ age: { $gt: 20 } })项目目录结构
- 接口定义:
./core/types.ts,./adapter/adapter.ts - 核心实现:
./core/Table.ts - 适配器实现:
./adapter/
