簡単で型安全なデータベースアクセス
Fastifyサーバーで

FastifyアプリでPrisma(JavaScriptおよびTypeScript向けのより良いORM)を使用して、MySQL、PostgreSQL、SQL Serverデータベースからデータをクエリします。

tech

Prismaとは?

Prismaは、素晴らしいDXで高性能なNext.jsアプリを構築するための完璧なパートナーとなるデータベースツールを提供します。

ORM

Prisma ORMは最も人気のあるTypeScript ORMです。人間が読めるスキーマ、自動マイグレーション、直感的で完全に型安全なクエリAPIを備えています。

Prisma ORMについて詳しく見る

Postgres

Prisma Postgresは、コールドスタートのない最初のサーバーレスデータベースです。これはユニカーネルに基づいており、ベアメタルで動作し、組み込みのキャッシュ、高性能クエリ、シームレスなスケーリングをすべて素晴らしいDXで提供します。

Prisma Postgresについて詳しく見る

PrismaとFastifyの連携方法

Prisma ORMは、Fastifyサーバーでデータベースをクエリするために使用される次世代ORMです。プレーンなSQLクエリの記述、knex.jsのようなクエリビルダー、またはTypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。Prisma ORMはRESTおよびGraphQL APIの構築に使用でき、マイクロサービスアーキテクチャとモノリシックアーキテクチャの両方とスムーズに統合します。

さらに、当社の追加ツールでPrisma ORMの利用を強化できます
Prisma Accelerateは、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
Prisma Pulseは、型安全な方法でリアクティブなリアルタイムアプリケーションを構築することを可能にします。

PrismaとFastifyのコード例

PrismaはFastifyと完全に統合する便利なデータベースアクセスレイヤーを提供します。

以下に示すコードは、Fastifyを使用してAPIサーバーを構築する際にPrismaを様々に利用する方法を示しています。

REST API

REST API

Prismaは、データベース内のデータを読み書きするために、ルートハンドラー内で使用されます。

1import fastify from 'fastify'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = fastify()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47app.listen(3000)
FastifyプラグインでのPrisma
GraphQL API
Prismaスキーマ

REST API

Prismaは、データベース内のデータを読み書きするために、ルートハンドラー内で使用されます。

1import fastify from 'fastify'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = fastify()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47app.listen(3000)

PrismaとFastifyを選ぶ理由

柔軟なアーキテクチャ

マイクロサービスでもモノリシックアプリでも、Prismaはあなたのスタックに完全に適合します。

生産性の向上

Prismaは、データベースクエリのオートコンプリート、優れた開発者体験、完全な型安全を提供します。

型安全なデータベースクライアント

Prisma Clientは、JavaScriptでもオートコンプリートなどの利点とともに、完全に型安全なデータベースクエリを保証します。

直感的なデータモデリング

Prismaの宣言型モデリング言語はシンプルで、データベーススキーマを直感的に記述できます。

簡単なデータベースマイグレーション

宣言型Prismaスキーマから予測可能でカスタマイズ可能なSQLマイグレーションを生成します。

API構築向けに設計

Prisma Clientは、一般的なAPI機能(例:ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。

注目のPrisma & Fastify例

Fastify、Mercurius、PrismaによるGraphQL APIの監視

本番環境でのトラブルシューティングに役立つだけでなく、GraphQLサーバーの信頼性の高い運用を保証するためのいくつかのプラクティスを探ります。

Fastify REST APIスターターキット

SQLiteデータベースを使用したREST APIのすぐに実行できるサンプルプロジェクト

Fastify GraphQL APIスターターキット

PostgreSQLデータベースを使用したGraphQL APIのすぐに実行できるサンプルプロジェクト

© . All rights reserved.