FastifyアプリでPrisma(JavaScriptおよびTypeScript向けのより良いORM)を使用して、MySQL、PostgreSQL、SQL Serverデータベースからデータをクエリします。
Prismaは、素晴らしいDXで高性能なNext.jsアプリを構築するための完璧なパートナーとなるデータベースツールを提供します。
Prisma ORMは最も人気のあるTypeScript ORMです。人間が読めるスキーマ、自動マイグレーション、直感的で完全に型安全なクエリAPIを備えています。
Prisma ORMについて詳しく見るPrisma Postgresは、コールドスタートのない最初のサーバーレスデータベースです。これはユニカーネルに基づいており、ベアメタルで動作し、組み込みのキャッシュ、高性能クエリ、シームレスなスケーリングをすべて素晴らしいDXで提供します。
Prisma Postgresについて詳しく見るPrisma ORMは、Fastifyサーバーでデータベースをクエリするために使用される次世代ORMです。プレーンなSQLクエリの記述、knex.jsのようなクエリビルダー、またはTypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。Prisma ORMはRESTおよびGraphQL APIの構築に使用でき、マイクロサービスアーキテクチャとモノリシックアーキテクチャの両方とスムーズに統合します。
さらに、当社の追加ツールでPrisma ORMの利用を強化できます
• Prisma Accelerateは、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
• Prisma Pulseは、型安全な方法でリアクティブなリアルタイムアプリケーションを構築することを可能にします。
PrismaはFastifyと完全に統合する便利なデータベースアクセスレイヤーを提供します。
以下に示すコードは、Fastifyを使用してAPIサーバーを構築する際にPrismaを様々に利用する方法を示しています。
Prismaは、データベース内のデータを読み書きするために、ルートハンドラー内で使用されます。
1import fastify from 'fastify'2import { PrismaClient } from '@prisma/client'34const prisma = new PrismaClient()5const app = fastify()67app.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})1415app.post('/post', async (req, res) => {16 const { title, content, authorEmail } = req.body17 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})2728app.put('/publish/:id', async (req, res) => {29 const { id } = req.params30 const post = await prisma.post.update({31 where: { id },32 data: { published: true },33 })34 res.json(post)35})3637app.delete('/user/:id', async (req, res) => {38 const { id } = req.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})4647app.listen(3000)
Prismaは、データベース内のデータを読み書きするために、ルートハンドラー内で使用されます。
1import fastify from 'fastify'2import { PrismaClient } from '@prisma/client'34const prisma = new PrismaClient()5const app = fastify()67app.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})1415app.post('/post', async (req, res) => {16 const { title, content, authorEmail } = req.body17 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})2728app.put('/publish/:id', async (req, res) => {29 const { id } = req.params30 const post = await prisma.post.update({31 where: { id },32 data: { published: true },33 })34 res.json(post)35})3637app.delete('/user/:id', async (req, res) => {38 const { id } = req.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})4647app.listen(3000)
マイクロサービスでもモノリシックアプリでも、Prismaはあなたのスタックに完全に適合します。
Prismaは、データベースクエリのオートコンプリート、優れた開発者体験、完全な型安全を提供します。
Prisma Clientは、JavaScriptでもオートコンプリートなどの利点とともに、完全に型安全なデータベースクエリを保証します。
Prismaの宣言型モデリング言語はシンプルで、データベーススキーマを直感的に記述できます。
宣言型Prismaスキーマから予測可能でカスタマイズ可能なSQLマイグレーションを生成します。
Prisma Clientは、一般的なAPI機能(例:ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。
本番環境でのトラブルシューティングに役立つだけでなく、GraphQLサーバーの信頼性の高い運用を保証するためのいくつかのプラクティスを探ります。
SQLiteデータベースを使用したREST APIのすぐに実行できるサンプルプロジェクト
PostgreSQLデータベースを使用したGraphQL APIのすぐに実行できるサンプルプロジェクト
コミュニティメンバーやPrismaチームと交流できる複数のチャンネルがあります。