Kysely
Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
Kysely is a type-safe and autocompletion-friendly TypeScript SQL query builder.
It lets developers build SQL queries with a fluent API. It also helps to detect errors in queries by leveraging TypeScript.
A Little Case
In the following example, we use the Kysely query builder to fetch a user from the database:
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 uses the DB
interface to type the result of the query. As a consequence, TypeScript infers the user
variable as User | undefined
(because the query may return an empty result).
Kysely helps to type the query result, and also the query itself. For example, if we try to select a column foo
that does not exist in the user
type, we will have a TypeScript error:
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();
The error message is not very clear, but it helps to detect the bug and prevent runtime errors.
More Features In The Video
Useful Resources
- 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