Kysely
Kysely 是一個 類型安全 和 自動完成友好 的 TypeScript SQL 查詢構造器。
它允許開發人員使用流暢的 API 構建 SQL 查詢語句。它還有助於利用 TypeScript 檢測查詢中的錯誤。
一個小示例
在接下來的示例中,我們使用 Kysely 查詢構造器來從數據庫中獲取用戶信息:
import { Kysely, PostgresDialect } from 'kysely';
interface User {  id: number;  name: string;  email: string;}
interface Post {  id: number;  title: string;  content: string;  authorId: number;}
interface DB {  users: User;  posts: Post;}
const db = new Kysely < DB > ({  dialect: new PostgresDialect({    pool: new Pool({      host: process.env.DATABASE_HOST,      database: process.env.DATABASE_DB,      user: process.env.DATABASE_USER,      password: process.env.DATABASE_PASSWORD,      port: Number(process.env.DATABASE_PORT),    }),  }),});
const user = db  .selectFrom('users')  .where('id', 1)  .select(['id', 'name', 'email'])  .executeTakeFirst();Kysely 使用 DB 接口來輸入查詢結果。因此,TypeScript 將 user 變量定義為 User | undefined(因為查詢可能返回空結果)。
Kysely 會將查詢結果以類型安全的方式返回。例如,如果我們嘗試去查詢一個在 user 類型中不存在的字段 foo,則會出現 TypeScript 錯誤:
const user = db  .selectFrom('users')  .where('id', 1)  // Type Error: Argument of type 'string[]' is not assignable to parameter of type 'SelectExpression<DB, "users">'.  .select(['id', 'name', 'email', 'foo'])  .executeTakeFirst();錯誤消息不是很清楚,但它有助於檢測錯誤並防止運行時錯誤。
更多的特性在視頻中呈現
實用資源
- Kysely Docs https://kysely.dev/docs/intro
- Kysely GitHub https://github.com/kysely-org/kysely
- Kysely API Docs https://kysely-org.github.io/kysely-apidoc/
- Kysely Code Examples https://kysely.dev/docs/category/examples