Prismaを使ってGraphQLでMySQL、PostgreSQL、SQL Serverデータベースからデータをクエリ – 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
ApolloはGraphQLでアプリケーションを構築するための素晴らしいエコシステムを提供します。Apollo Serverでデータベースに対してGraphQL APIを構築する際、GraphQLリゾルバー内でデータベースクエリを送信する必要があります – そこでPrismaが登場します。
PrismaはApollo ServerのGraphQLリゾルバー内でデータベースをクエリするために使用されるORMです。 GraphQLエコシステムのすべてのツールやライブラリと完璧に連携します。GraphQLとPrismaの詳細はこちら。
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チームと交流できる複数のチャネルがあります。