FastifyアプリでMySQL、PostgreSQL、SQL ServerデータベースからPrismaを使ってデータクエリ – JavaScriptとTypeScriptのためのより良いORM。
Prismaはデータ操作を容易にします!タイプセーフなNode.js & TypeScript ORM、グローバルデータベースキャッシュ、接続プーリング、リアルタイムデータベースイベントを提供します。
// Creating a new recordawait prisma.user.create({firstName: “Alice”,email: “alice@prisma.io”})
id firstName email1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
Prisma ORMは、Fastifyサーバーでデータベースをクエリするために使用される次世代ORMです。生のSQLクエリ、knex.jsのようなクエリビルダー、またはTypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。Prisma ORMは、RESTおよびGraphQL APIを構築するために使用でき、マイクロサービスとモノリシックアーキテクチャの両方とスムーズに統合できます。
Prisma ORMの利用をさらに強化するために、追加のツールもご利用いただけます。
• Prisma Accelerateは、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
• Prisma Pulseを使用すると、タイプセーフな方法でリアクティブなリアルタイムアプリケーションを構築できます。
Prismaは、Fastifyと完璧に統合する便利なデータベースアクセスレイヤーを提供します。
以下のコードは、APIサーバーを構築するためにFastifyを使用する際の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チームと交流できる複数のチャンネルがあります。