前言
在现代 Web 开发中,GraphQL 和 Prisma 已经成为了不可或缺的一部分。GraphQL 作为一种 API 查询语言,可以让前端开发者更加灵活地获取数据;而 Prisma 则是一个现代化的 ORM 工具,可以帮助开发者更加高效地访问数据库。本文将介绍如何使用 Prisma 访问 GraphQL 中的数据库。
环境准备
在开始之前,需要先安装 Node.js 和 npm。可以在 Node.js 官网上下载对应的安装包进行安装。
同时,还需要创建一个新的项目,并在项目中安装以下依赖:
npm install graphql prisma
创建 Prisma 数据模型
首先,需要创建一个 Prisma 数据模型。这个数据模型将定义数据库的结构和关系。
在项目根目录下创建一个 schema.prisma
文件,并添加以下内容:
// javascriptcn.com 代码示例 datasource db { provider = "sqlite" url = "file:./dev.db" } generator client { provider = "prisma-client-js" } model User { id Int @id @default(autoincrement()) name String email String @unique }
这个数据模型定义了一个名为 User
的模型,包含 id
、name
和 email
三个字段。其中,id
为自增主键,email
为唯一索引。
生成 Prisma Client
接下来,需要使用 Prisma CLI 生成 Prisma Client。Prisma Client 是一个用于访问数据库的 JavaScript 库。
在终端中执行以下命令生成 Prisma Client:
npx prisma generate
执行完毕后,将在项目根目录下生成一个 node_modules/.prisma/client
目录,里面包含了 Prisma Client 的所有代码。
创建 GraphQL Schema
接下来,需要创建一个 GraphQL Schema。这个 Schema 将定义 GraphQL API 的结构和操作。
在项目根目录下创建一个 schema.graphql
文件,并添加以下内容:
// javascriptcn.com 代码示例 type Query { users: [User!]! } type Mutation { createUser(name: String!, email: String!): User! } type User { id: Int! name: String! email: String! }
这个 Schema 定义了一个 Query
类型和一个 Mutation
类型,分别对应查询和修改操作。同时,还定义了一个 User
类型,表示一个用户对象。
实现 GraphQL Resolvers
最后,需要实现 GraphQL Resolvers,将 GraphQL 操作映射到 Prisma Client 中的数据操作。
在项目根目录下创建一个 index.js
文件,并添加以下内容:
// javascriptcn.com 代码示例 const { PrismaClient } = require('@prisma/client') const { ApolloServer, gql } = require('apollo-server') const prisma = new PrismaClient() const typeDefs = gql` type Query { users: [User!]! } type Mutation { createUser(name: String!, email: String!): User! } type User { id: Int! name: String! email: String! } ` const resolvers = { Query: { users: async () => { return await prisma.user.findMany() }, }, Mutation: { createUser: async (parent, args) => { return await prisma.user.create({ data: { name: args.name, email: args.email, }, }) }, }, } const server = new ApolloServer({ typeDefs, resolvers }) server.listen().then(({ url }) => { console.log(`Server ready at ${url}`) })
这个文件定义了一个 PrismaClient
对象,用于访问数据库。同时,还定义了一个 typeDefs
对象,表示 GraphQL Schema,和一个 resolvers
对象,表示 GraphQL Resolvers。
最后,创建一个 ApolloServer
对象并启动服务器。
测试
在终端中执行以下命令启动服务器:
node index.js
服务器启动后,可以在浏览器中访问 http://localhost:4000/
,打开 GraphQL Playground。在 Playground 中可以测试 GraphQL API。
例如,执行以下查询操作:
query { users { id name email } }
服务器将返回所有用户的 ID、姓名和邮箱。
同时,还可以执行以下修改操作:
mutation { createUser(name: "Alice", email: "alice@example.com") { id name email } }
服务器将创建一个名为 Alice 的用户,并返回其 ID、姓名和邮箱。
总结
本文介绍了如何使用 Prisma 访问 GraphQL 中的数据库。通过创建 Prisma 数据模型、生成 Prisma Client、创建 GraphQL Schema 和实现 GraphQL Resolvers,可以快速地搭建一个 GraphQL API,并访问数据库中的数据。同时,本文还提供了示例代码和测试方法,希望能够帮助读者更好地理解和使用 Prisma 和 GraphQL。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65828680d2f5e1655dda0ee0