Drizzle <> Turso

This guide assumes familiarity with:

根据 官方网站 的描述,Turso 是一款基于 libSQL 的边缘 SQLite 数据库即服务。

Drizzle ORM 原生支持 libSQL 驱动程序,我们采用 SQL 方言、特定于方言的驱动程序和语法,并镜像最流行的类 SQLite allgetvaluesrun 查询方法语法。

步骤 1 - 安装软件包

npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client -D drizzle-kit

步骤 2 - 初始化驱动程序

Drizzle 原生支持所有 @libsql/client 驱动程序变体:

@libsql/clientdefaults to node import, automatically changes to web if target or platform is set for bundler, e.g. esbuild --platform=browser
@libsql/client/nodenode compatible module, supports :memory:, file, wss, http and turso connection protocols
@libsql/client/webmodule for fullstack web frameworks like next, nuxt, astro, etc.
@libsql/client/httpmodule for http and https connection protocols
@libsql/client/wsmodule for ws and wss connection protocols
@libsql/client/sqlite3module for :memory: and file connection protocols
@libsql/client-wasmSeparate experimental package for WASM

default
node
web
http
web sockets
wasm
import { drizzle } from 'drizzle-orm/libsql';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});

如果你需要提供现有的驱动程序:

default
web
import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';

const client = createClient({ 
  url: process.env.DATABASE_URL,
  authToken: process.env.DATABASE_AUTH_TOKEN
});

const db = drizzle({ client });

const result = await db.select().from(users).all()

步骤 3 - 创建查询

import { drizzle } from 'drizzle-orm/libsql';
import * as s from 'drizzle-orm/sqlite-core';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});

const users = s.sqliteTable("users", {
  id: s.integer(),
  name: s.text(),
})

const result = await db.select().from(users);

下一步是什么?