LitDB:轻量级数据库抽象层

LitDB:轻量级数据库抽象层

litdb Lightweight RDBMS agnostic TypeScript/JS abstraction for SQLite, PostgreSQL and MySQL litdb 项目地址: https://gitcode.com/gh_mirrors/li/litdb

1. 项目介绍

LitDB 是一个针对 TypeScript/JavaScript 的轻量级关系数据库管理系统(RDBMS)抽象层。它支持 SQLite、PostgreSQL 和 MySQL 等数据库系统,提供了类似于 LINQ 的类型安全 SQL 构建器,使得编写可移植且安全的 SQL 代码变得简单。LitDB 的 API 设计接近 SQL 语法,利用标记模板来简化表和列引用的维护、参数化值的处理以及不同 SQL 方言的适配,从而保留了 SQL 的表达自由度,同时确保了跨多个 RDBMS 的可移植性。

2. 项目快速启动

首先,您需要安装 LitDB。如果您使用的是 npm,可以执行以下命令:

npm install litdb

以下是使用 LitDB 的一个简单示例:

import { sql, params } from 'litdb';

// 假设我们有一个 Contact 类型
interface Contact {
  name: string;
  email: string;
}

// 使用 LitDB 的 SQL 构建器来构建一个查询
const query = sql`
  SELECT ${c.name} FROM Contact AS c WHERE c.email = ${someEmail}
`;

// 构建查询并获取参数
const { sqlQuery, sqlParams } = query.build();

在上面的代码中,我们创建了一个简单的查询,选择了 Contact 表中邮箱地址匹配 someEmail 的记录的姓名。

3. 应用案例和最佳实践

使用类型安全的 SQL 构建器

LitDB 提供了类型安全的 SQL 构建器,这可以帮助我们在编写查询时减少错误。以下是如何使用它的一个例子:

import { sql, params } from 'litdb';
import { Contact } from './path-to-your-models';

const email = 'john@mail.org';
const query = sql`
  SELECT ${c.name} FROM Contact AS c WHERE c.email = ${email}
`;

const { sqlQuery, sqlParams } = query.build();

在这个例子中,如果 Contact 类型没有 name 属性,编译器将会报错,这样就减少了运行时错误的可能性。

使用异步 API

对于非 SQLite 数据库,建议使用异步 API,以确保操作不会阻塞事件循环:

import { sql, params } from 'litdb';

async function fetchContacts() {
  const query = sql`
    SELECT * FROM Contact
  `;
  const { sqlQuery, sqlParams } = query.build();

  // 使用您的数据库客户端执行查询
  const result = await databaseClient.query(sqlQuery, sqlParams);
  return result.rows;
}

使用模型和 ORM 集成

LitDB 可以与您的模型和 ORM 无缝集成,允许您利用类型安全的好处,同时保持使用的便捷性。

4. 典型生态项目

目前,LitDB 提供了一些针对不同数据库的驱动程序,例如:

  • @litdb/bun-sqlite:用于 Bun 的 SQLite3 驱动。
  • @litdb/better-sqlite:用于 Node 的 better-sqlite3 驱动。
  • @litdb/postgres:用于 PostgreSQL 的 postgres.js 客户端。
  • @litdb/mysql:用于 MySQL 的 node-mysql2 客户端。

这些驱动程序提供了方便的 API 来执行 SQL 和传递参数,与 LitDB 的 SQL 构建器结合使用时,可以发挥最大的价值。

litdb Lightweight RDBMS agnostic TypeScript/JS abstraction for SQLite, PostgreSQL and MySQL litdb 项目地址: https://gitcode.com/gh_mirrors/li/litdb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶展冰Guy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值