透過 Prisma(適用於 JavaScript 和 TypeScript 的更佳 ORM),在 GraphQL 中查詢來自 MySQL、PostgreSQL 和 SQL Server 資料庫的資料。
// 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 是一個 ORM,用於 Apollo Server 的 GraphQL 解析器內,以查詢您的資料庫。 它與 GraphQL 生態系統中您所有喜愛的工具和程式庫完美搭配。深入了解Prisma 與 GraphQL。
Prisma schema 使用 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 優先方法或程式碼優先方法(由 Nexus 或 TypeGraphQL 等程式庫提供)相容。
當使用 Apollo 的原生 SDL 優先方法來建構您的 GraphQL 結構描述時,您需要以字串形式提供您的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 });
當使用 Apollo 的原生 SDL 優先方法來建構您的 GraphQL 結構描述時,您需要以字串形式提供您的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 的內建 dataloader 可確保最佳化且高效能的資料庫查詢,即使是 N+1 查詢也是如此。
Prisma Client 確保完全類型安全的資料庫查詢,並具有自動完成等優點 — 即使在 JavaScript 中也是如此。
Prisma 的建模語言受到 GraphQL SDL 的啟發,讓您可以直觀地描述您的資料庫結構描述。
將您的 Prisma 結構描述映射到資料庫,讓您無需編寫 SQL 來管理您的資料庫結構描述。
Prisma Client 透過為常見的資料庫功能提供便捷的 API 來減少樣板程式碼。
一個綜合教學課程,說明如何使用 Apollo Server 和 Prisma 建構 GraphQL API,並將其部署到 DigitalOcean 的 App Platform。
一個可立即執行的範例專案,具有 SDL 優先結構描述和 SQLite 資料庫
一個可立即執行的範例專案,具有 Nexus(程式碼優先)和 SQLite 資料庫
我們有多個管道,您可以在其中與我們的社群成員以及 Prisma 團隊互動。