透過 Prisma(一個更好的 JavaScript 和 TypeScript ORM),使用 GraphQL 查詢 MySQL、PostgreSQL 和 SQL Server 資料庫中的資料。
Prisma 提供資料庫工具,是構建高效能 Next.js 應用程式並帶來出色開發體驗 (DX) 的完美伴侶。
Prisma Postgres 是第一個無冷啟動的無伺服器資料庫。它基於單一核心 (unikernels),執行在裸機上,並內建快取、高效能查詢和無縫擴充套件——所有這些都帶來了出色的開發體驗 (DX)。
瞭解更多關於 Prisma Postgres 的資訊Apollo 為使用 GraphQL 構建應用程式提供了一個優秀的生態系統。當使用 Apollo Server 對資料庫構建 GraphQL API 時,您需要在 GraphQL 解析器中傳送資料庫查詢——這就是 Prisma 的作用所在。
Prisma 是一個 ORM,用於您 Apollo Server 的 GraphQL 解析器中,以查詢您的資料庫。它與 GraphQL 生態系統中所有您喜歡的工具和庫完美配合。瞭解更多關於Prisma 與 GraphQL 結合使用的資訊。
Prisma schema 使用 Prisma 的建模語言來定義您的資料庫 schema。它使資料建模變得簡單直觀,尤其是在建模關係方面。
您還可以透過我們的附加工具增強 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 查詢和變更 (mutations)。
它與 Apollo 原生的 SDL-優先方法或由 Nexus 或 TypeGraphQL 等庫提供的程式碼優先方法相容。
當使用 Apollo 原生的 SDL-優先方法構建您的 GraphQL schema 時,您將 GraphQL schema 定義作為字串和實現此定義的解析器對映提供。在您的解析器內部,您可以使用 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 schema 時,您將 GraphQL schema 定義作為字串和實現此定義的解析器對映提供。在您的解析器內部,您可以使用 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 提供了一個出色的建模語言來定義您的資料庫,以及一個強大的 ORM,用於在 JavaScript 和 TypeScript 中處理 SQL。它是 Apollo Server 的完美搭配,使使用資料庫構建 GraphQL API 變得令人愉悅。”
為您的應用程式從資料庫到前端獲取一致的型別定義,以提高生產力並避免錯誤。
Prisma 內建的資料載入器 (dataloader) 確保最佳化和高效能的資料庫查詢,甚至對於 N+1 查詢也是如此。
Prisma Client 確保完全型別安全的資料庫查詢,並提供自動補全等好處——即使在 JavaScript 中也是如此。
Prisma 的建模語言受到 GraphQL SDL 的啟發,讓您能夠直觀地描述您的資料庫 schema。
將您的 Prisma schema 對映到資料庫,這樣您就不需要編寫 SQL 來管理您的資料庫 schema。
Prisma Client 透過為常見資料庫功能提供方便的 API 來減少樣板程式碼。
一個全面的教程,解釋如何使用 Apollo Server 和 Prisma 構建 GraphQL API 並將其部署到 DigitalOcean 的應用平臺。
一個可直接執行的示例專案,包含 SDL-優先 schema 和 SQLite 資料庫
一個可直接執行的示例專案,包含 Nexus (程式碼優先) 和 SQLite 資料庫
我們有多個渠道,您可以與社群成員以及 Prisma 團隊互動。