Drizzle ORM

Drizzle 是你的好朋友,必要时它会在你身边,而当你需要一些空间时,它又不会打扰你。

Drizzle ORM 是一个无头 TypeScript ORM 🐲

它看起来简单直观,并且能在项目的 1000 天内表现出色,让你以自己的方式进行操作,并在你需要时提供帮助。

它是唯一同时拥有关系型类 SQL 查询 API 的 ORM,在访问关系型数据时为您提供两全其美的解决方案。Drizzle 设计轻巧、性能卓越、类型安全、不含乳糖、不含麸质、头脑清醒、灵活且无需服务器。Drizzle 不仅仅是一个库,更是一种体验 🤩。

Drizzle bestofjs

无头 ORM

首先,Drizzle 是一个库,也是一个补充性可选工具的集合。

ORM 代表对象关系映射,开发人员倾向于将类似 Django 或 Spring 的工具称为 ORM。 我们确实认为这是一种基于传统术语的误解,我们称它们为数据框架

️💔

对于数据框架,你必须 围绕它们 而不是 使用它们 来构建项目。

Drizzle 可让您按照自己的方式构建项目,而不会干扰您的项目或结构。

使用 Drizzle,您可以在 TypeScript 中定义和管理数据库模式,以类似 SQL 或关系型的方式访问数据,并利用可选工具将您的开发体验提升到新高度 🤯。

为什么是类 SQL

如果你了解 SQL —— 你就了解 Drizzle

其他 ORM 和数据框架往往会偏离或抽离你的 SQL,这会导致需要学习两个方面的内容 —— 既需要了解 SQL,又需要了解框架的 API。

Drizzle 正好相反。我们拥抱 SQL,并将 Drizzle 构建成了类 SQL 的核心,以便你几乎零学习成本即可使用全面的 SQL 强大功能。

我们带来了熟悉的 SQL 模式查询自动迁移 以及 其他更多的细节

index.ts
schema.ts
migration.sql
// Access your data
await db
  .select()
  .from(countries)
  .leftJoin(cities, eq(cities.countryId, countries.id))
  .where(eq(countries.id, 10))
// manage your schema
export const countries = pgTable('countries', {
  id: serial('id').primaryKey(),
  name: varchar('name', { length: 256 }),
});

export const cities = pgTable('cities', {
  id: serial('id').primaryKey(),
  name: varchar('name', { length: 256 }),
  countryId: integer('country_id').references(() => countries.id),
});
-- generate migrations
CREATE TABLE IF NOT EXISTS "countries" (
  "id" serial PRIMARY KEY NOT NULL,
  "name" varchar(256)
);

CREATE TABLE IF NOT EXISTS "cities" (
  "id" serial PRIMARY KEY NOT NULL,
  "name" varchar(256),
  "country_id" integer
);

ALTER TABLE "cities" ADD CONSTRAINT "cities_country_id_countries_id_fk" FOREIGN KEY ("country_id") REFERENCES "countries"("id") ON DELETE no action ON UPDATE no action;

为什么不是类 SQL

我们总是努力寻求一个完美平衡的解决方案,虽然类 SQL 可以满足 100% 的需求,但在某些常见场景中,你可以以更好的方式查询数据。

我们为你构建了 Queries API,这样你就可以以最方便和高效的方式从数据库中检索关系嵌套数据,无需考虑连接和数据映射的问题。

Drizzle 总是输出确切的 1 条 SQL 查询 —— 可以放心地使用它与无服务器数据库一起使用,无需担心性能或往返成本!

const result = await db.query.users.findMany({
  with: {
    posts: true
  },
});

无服务器

🥳

最好的部分就是没有部分 —— Drizzle 没有任何依赖!

Drizzle 已为无服务器准备就绪

Drizzle ORM 专为 SQL 方言而设计,外形纤薄,性能卓越,可用于无服务器环境。

我们花了很多时间确保你拥有一流的 SQL 方言支持 —— Postgres、MySQL 或任何其他特定方言的内容。

Drizzle 是通过行业标准的数据库驱动程序原生操作的。我们支持所有主要的 PostgreSQLMySQLSQLite 驱动程序,并且我们正在 以非常快的速度 添加新驱动程序的支持。

欢迎加入我们

越来越多的公司正在将 Drizzle 应用到生产中,因为它在开发体验和性能方面带来了巨大的好处。

我们总是乐于帮助,所以请随时联系我们 —— 我们很愿意在您的 Drizzle 之旅中提供帮助!

我们有一个出色的 Discord 社区,欢迎所有构建者加入我们的 Twitter

现在使用 Drizzle 和你的 PostgreSQLMySQLSQLite 构建出色的东西吧 🚀

Become a Gold Sponsor