使用 Prisma 在 GraphQL 中查询 MySQL、PostgreSQL & SQL Server 数据库 – 一款更好的 JavaScript 和 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 是一个 ORM,用于 Apollo Server 的 GraphQL 解析器内部,以便查询数据库。 它能与 GraphQL 生态系统中你最喜欢的工具和库完美配合。了解更多关于 Prisma 与 GraphQL 的信息。
The 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 查询和变更。
它兼容 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 为定义数据库提供了出色的建模语言,以及用于在 JavaScript & TypeScript 中处理 SQL 的强大 ORM。它是 Apollo Server 的完美搭配,让使用数据库构建 GraphQL API 变得令人愉快。”
为你的应用程序获得一致的类型定义,从数据库到前端,从而提高生产力并避免错误。
Prisma 内置的数据加载器确保优化的、高性能的数据库查询,即使是 N+1 查询也是如此。
Prisma Client 确保完全类型安全的数据库查询,并带来诸如自动补全等优势 – 即使在 JavaScript 中也是如此。
Prisma 的建模语言受 GraphQL SDL 启发,让你能够直观地描述数据库 Schema。
将你的 Prisma Schema 映射到数据库,这样你就无需编写 SQL 来管理你的数据库 Schema。
Prisma Client 通过为常见的数据库功能提供便捷的 API 来减少样板代码。
一个全面的教程,解释如何使用 Apollo Server 和 Prisma 构建 GraphQL API,并将其部署到 DigitalOcean 的 App Platform。
一个包含 SDL-优先 Schema 和 SQLite 数据库的即用型示例项目
一个包含 Nexus (代码优先) 和 SQLite 数据库的即用型示例项目
我们有多个渠道,你可以在其中与社区成员以及 Prisma 团队互动。