MySQL、PostgreSQL、SQL ServerデータベースのデータをPrisma(JavaScriptおよびTypeScript向けのより優れたORM)を使ってGraphQLでクエリできます。
Prismaは、優れた開発者体験(DX)で高性能なNext.jsアプリを構築するための最適なデータベースツールを提供します。
Prisma ORMは最も人気のあるTypeScript ORMです。人間が読めるスキーマ、自動マイグレーション、直感的で完全に型安全なクエリAPIを備えています。
Prisma ORMについて詳しく知るPrisma Postgresは、コールドスタートのない初めてのサーバーレスデータベースです。ユニカーネルをベースとし、ベアメタル上で動作し、組み込みキャッシュ、高性能クエリ、シームレスなスケーリングをすべて優れた開発者体験(DX)で実現します。
Prisma Postgresについて詳しく知るApolloはGraphQLでアプリケーションを構築するための素晴らしいエコシステムを提供します。Apollo Serverでデータベースに対してGraphQL APIを構築する際、GraphQLリゾルバ内でデータベースクエリを送信する必要があります。そこでPrismaが役立ちます。
Prismaは、Apollo ServerのGraphQLリゾルバ内でデータベースにクエリするために使用されるORMです。 GraphQLエコシステムのすべての主要なツールやライブラリと完全に連携します。PrismaとGraphQLについて詳しく知る。
Prismaスキーマは、Prismaのモデリング言語を使用して*データベーススキーマ*を定義します。特に*リレーション*のモデリングにおいて、データモデリングを簡単かつ直感的にします。
また、追加ツールでPrisma ORMの利用をさらに強化できます
• Prisma Accelerate は、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
• Prisma Pulse を使用すると、型安全な方法でリアクティブなリアルタイムアプリケーションを構築できます。PulseはGraphQLサブスクリプションやライブクエリを実装するのに最適なツールです。
1// Define the `User` table in the database2model User {3 id String @id @default(cuid())4 email String @unique5 password String6 name String?7 posts Post[]8}910// Define the `Post` table in the database11model Post {12 id String @id @default(cuid())13 title String14 content String?15 authorId String16 author User17}
Prismaは、Apollo ServerのGraphQLリゾルバ内でデータベースのデータの読み書きを行い、GraphQLクエリとミューテーションを実装するために使用できます。
ApolloのネイティブなSDL-firstアプローチ、またはNexusやTypeGraphQLのようなライブラリが提供するコードファーストアプローチと互換性があります。
GraphQLスキーマを構築するためにApolloのネイティブなSDL-firstアプローチを使用する場合、*GraphQLスキーマ定義*を文字列として、そしてその定義を実装する*リゾルバマップ*を提供します。リゾルバ内では、Prisma Clientを使用してデータベースのデータを読み書きし、受信したGraphQLクエリとミューテーションを解決できます。
1import { PrismaClient } from '@prisma/client';2import { ApolloServer } from 'apollo-server'34const prisma = new PrismaClient();56const typeDefs = `7 type User {8 email: String!9 name: String10 }1112 type Query {13 allUsers: [User!]!14 }15`;1617const resolvers = {18 Query: {19 allUsers: () => {20 return prisma.user.findMany();21 }22 }23};2425const server = new ApolloServer({ resolvers, typeDefs });26server.listen({ port: 4000 });
GraphQLスキーマを構築するためにApolloのネイティブなSDL-firstアプローチを使用する場合、*GraphQLスキーマ定義*を文字列として、そしてその定義を実装する*リゾルバマップ*を提供します。リゾルバ内では、Prisma Clientを使用してデータベースのデータを読み書きし、受信したGraphQLクエリとミューテーションを解決できます。
1import { PrismaClient } from '@prisma/client';2import { ApolloServer } from 'apollo-server'34const prisma = new PrismaClient();56const typeDefs = `7 type User {8 email: String!9 name: String10 }1112 type Query {13 allUsers: [User!]!14 }15`;1617const resolvers = {18 Query: {19 allUsers: () => {20 return prisma.user.findMany();21 }22 }23};2425const server = new ApolloServer({ resolvers, typeDefs });26server.listen({ port: 4000 });
"Prismaは、データベースを定義するための優れたモデリング言語と、JavaScript & TypeScriptでSQLを扱うための強力なORMを提供します。これは**Apollo Serverと完璧にマッチ**し、データベースを使ったGraphQL APIの構築を楽しくします。"
データベースからフロントエンドまで、アプリケーション全体で一貫した型付けを実現し、生産性を向上させ、エラーを防ぎます。
Prismaに組み込まれたデータローダーは、N+1クエリであっても、最適化された高性能なデータベースクエリを保証します。
Prisma Clientは、JavaScriptでもオートコンプリートなどのメリットを備えた、完全に型安全なデータベースクエリを保証します。
Prismaのモデリング言語はGraphQL SDLに触発されており、データベーススキーマを直感的に記述できます。
Prismaスキーマをデータベースにマッピングすることで、データベーススキーマ管理のためにSQLを記述する必要がなくなります。
Prisma Clientは、一般的なデータベース機能のための便利なAPIを提供することで、ボイラープレートを削減します。
Apollo ServerとPrismaを使用してGraphQL APIを構築し、DigitalOceanのApp Platformにデプロイする方法を解説する包括的なチュートリアルです。
SDL-firstスキーマとSQLiteデータベースを含む、すぐに実行できるサンプルプロジェクト
Nexus(コードファースト)とSQLiteデータベースを含む、すぐに実行できるサンプルプロジェクト
コミュニティメンバーやPrismaチームと交流できる複数のチャンネルがあります。