使用 Prisma 在 GraphQL 中查詢 MySQL、PostgreSQL 和 SQL Server 資料庫——為 JavaScript 和 TypeScript 打造的更優秀的 ORM。
Prisma 提供了資料庫工具,是構建高效能 Next.js 應用程式並實現卓越開發體驗的理想伴侶。
Prisma Postgres 是第一個無冷啟動的無伺服器資料庫。它基於單核作業系統(unikernels),執行在裸機上,並內建快取、高效能查詢和無縫擴充套件——所有這些都提供了卓越的開發體驗。
瞭解更多關於 Prisma PostgresGraphQL 提供了一種強大的方式,讓 Web 和移動應用程式可以從 API 獲取資料。然而,作為一名後端開發者,您仍然需要透過實現 GraphQL 解析器來負責您的 GraphQL 伺服器如何從資料庫檢索請求的資料——這就是 Prisma ORM 的用武之地。Prisma ORM 用於 GraphQL 解析器內部,以查詢資料庫。它與您在 GraphQL 生態系統中所有喜愛的工具和庫無縫整合。
您還可以使用我們的附加工具來增強 Prisma ORM 的使用
• Prisma Accelerate 是一個全球資料庫快取和可擴充套件連線池,可加速您的資料庫查詢。
• Prisma Pulse 使您能夠以型別安全的方式構建響應式、即時應用程式。Pulse 是實現 GraphQL 訂閱或即時查詢的完美伴侶。
該Prisma 模式使用 Prisma 的建模語言來定義您的資料庫模式。它使資料建模變得簡單直觀,尤其是在建模關係時。
Prisma 模式的語法深受 GraphQL SDL 啟發。如果您已經熟悉 SDL,那麼學習如何使用它來建模資料庫表將輕而易舉。
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 User @relation(fields: [authorId], references: [id])17}
Prisma 可用於您的 GraphQL 解析器中,無論您是使用 graphql-tools 中的 makeExecutableSchema 進行 SDL 優先的方法,還是使用 Nexus 或 TypeGraphQL 等程式碼優先的方法。
注意: 以下所有示例均使用 express-graphql 作為 GraphQL 伺服器,但它們也適用於任何其他庫,如 Apollo Server、NestJS 或 Mercurius。
當使用 SDL 優先的方法構建您的 GraphQL 模式時,您將提供作為字串的GraphQL 模式定義和一個實現此定義的解析器對映。在您的解析器內部,您可以使用 Prisma Client 讀取和寫入資料庫中的資料,以解析傳入的 GraphQL 查詢和變更。
1import { PrismaClient } from '@prisma/client';2import express from 'express';3import { graphqlHTTP } from 'express-graphql';4import { makeExecutableSchema } from '@graphql-tools/schema';56const prisma = new PrismaClient();78const typeDefs = `9 type User {10 email: String!11 name: String12 }1314 type Query {15 allUsers: [User!]!16 }17`;1819const resolvers = {20 Query: {21 allUsers: () => {22 return prisma.user.findMany();23 }24 }25};2627export const schema = makeExecutableSchema({28 resolvers,29 typeDefs,30});3132const app = express();33app.use('/graphql', graphqlHTTP({34 schema,35}));3637app.listen(4000);
當使用 SDL 優先的方法構建您的 GraphQL 模式時,您將提供作為字串的GraphQL 模式定義和一個實現此定義的解析器對映。在您的解析器內部,您可以使用 Prisma Client 讀取和寫入資料庫中的資料,以解析傳入的 GraphQL 查詢和變更。
1import { PrismaClient } from '@prisma/client';2import express from 'express';3import { graphqlHTTP } from 'express-graphql';4import { makeExecutableSchema } from '@graphql-tools/schema';56const prisma = new PrismaClient();78const typeDefs = `9 type User {10 email: String!11 name: String12 }1314 type Query {15 allUsers: [User!]!16 }17`;1819const resolvers = {20 Query: {21 allUsers: () => {22 return prisma.user.findMany();23 }24 }25};2627export const schema = makeExecutableSchema({28 resolvers,29 typeDefs,30});3132const app = express();33app.use('/graphql', graphqlHTTP({34 schema,35}));3637app.listen(4000);
為您的應用程式獲取一致的型別,從資料庫到前端,以提高生產力並避免錯誤。
Prisma 內建的資料載入器確保最佳化的、高效能的資料庫查詢,即使是 N+1 查詢也不例外。
Prisma Client 確保完全型別安全的資料庫查詢,並提供自動補全等優點——即使在 JavaScript 中也是如此。
Prisma 的建模語言受 GraphQL SDL 啟發,讓您可以直觀地描述您的資料庫模式。
將您的 Prisma 模式對映到資料庫,這樣您就不需要編寫 SQL 來管理您的資料庫模式。
Prisma Client 透過為常見資料庫功能提供便捷的 API 來減少樣板程式碼。
在 Prisma,我們熱愛 GraphQL 並相信其光明的未來。自運營 Graphcool(一個流行的 GraphQL BaaS),我們過去為 GraphQL 生態系統做出了很多貢獻,並且仍在投資各種幫助開發者採用 GraphQL 的工具。
我們也是 GraphQL 基金會 的自豪成員,並幫助推動 GraphQL 社群和生態系統向前發展。
一份關於 GraphQL 社群和生態系統的每週新聞稿
GraphQL 柏林見面會始於 2016 年,是世界上最受歡迎的 GraphQL 見面會之一
我們建立了流行的全棧 GraphQL 教程網站《如何使用 GraphQL》,以幫助開發者瞭解 GraphQL。
我們有多個渠道,您可以在其中與社群成員和 Prisma 團隊互動。