使用 Prisma 从 MySQL、PostgreSQL 和 SQL Server 数据库中查询 GraphQL 数据 - 一个针对 JavaScript 和 TypeScript 的更佳 ORM。
// Creating a new recordawait prisma.user.create({ firstName: “Alice”, email: “alice@prisma.io”})
id firstName email 1 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 是一个在 Apollo Server 的 GraphQL 解析器内部使用的 ORM,用于查询您的数据库。 它与来自 GraphQL 生态系统的您最喜欢的工具和库完美兼容。了解更多关于 Prisma 与 GraphQL 的结合使用.
Prisma 模式使用 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}9
10// 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-first 方法或 Nexus 或 TypeGraphQL 等库提供的代码优先方法兼容。
当使用 Apollo 的原生 SDL-first 方法构建 GraphQL 模式时,您将GraphQL 模式定义作为字符串提供,以及实现该定义的解析器映射。在您的解析器中,您可以使用 Prisma Client 来读取和写入数据库中的数据,以便解析传入的 GraphQL 查询和突变。
1import { PrismaClient } from '@prisma/client';2import { ApolloServer } from 'apollo-server'3
4const prisma = new PrismaClient();5
6const typeDefs = `7 type User {8 email: String!9 name: String10 }11
12 type Query {13 allUsers: [User!]!14 }15`;16
17const resolvers = {18 Query: {19 allUsers: () => {20 return prisma.user.findMany();21 }22 }23};24
25const server = new ApolloServer({ resolvers, typeDefs });26server.listen({ port: 4000 });
当使用 Apollo 的原生 SDL-first 方法构建 GraphQL 模式时,您将GraphQL 模式定义作为字符串提供,以及实现该定义的解析器映射。在您的解析器中,您可以使用 Prisma Client 来读取和写入数据库中的数据,以便解析传入的 GraphQL 查询和突变。
1import { PrismaClient } from '@prisma/client';2import { ApolloServer } from 'apollo-server'3
4const prisma = new PrismaClient();5
6const typeDefs = `7 type User {8 email: String!9 name: String10 }11
12 type Query {13 allUsers: [User!]!14 }15`;16
17const resolvers = {18 Query: {19 allUsers: () => {20 return prisma.user.findMany();21 }22 }23};24
25const 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,让您能够直观地描述您的数据库模式。
将 Prisma 模式映射到数据库,这样您就不需要编写 SQL 来管理您的数据库模式。
Prisma Client 通过提供方便的 API 来实现常见的数据库功能,从而减少了样板代码。
一个全面的教程,解释了如何使用 Apollo Server 和 Prisma 构建 GraphQL API 并将其部署到 DigitalOcean 的应用程序平台。
一个可立即运行的示例项目,包含 SDL-first 模式和 SQLite 数据库
一个可立即运行的示例项目,包含 Nexus (代码优先) 和 SQLite 数据库
我们拥有多个渠道,您可以与社区成员和 Prisma 团队互动。