跳转到内容

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();

錯誤消息不是很清楚,但它有助於檢測錯誤並防止運行時錯誤。

更多的特性在視頻中呈現

實用資源