通过 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 团队互动。