简介
本篇文章将介绍如何使用 Prisma 和 GraphQL 构建完整的应用程序。我们将从安装 Prisma 和设置数据库开始,一步步构建一个完整的应用程序。我们将使用 Node.js 和 TypeScript 作为开发语言,并使用 Apollo Server 作为 GraphQL 服务器。
安装 Prisma
Prisma 是一个现代化的数据库工具,可以轻松地管理和操作数据库。我们可以使用 Prisma 来连接各种数据库,包括 PostgreSQL、MySQL 和 SQLite 等。安装 Prisma 非常简单,只需要运行以下命令即可:
npm install prisma -g
设置数据库
在使用 Prisma 之前,我们需要设置一个数据库。在本文中,我们将使用 PostgreSQL 作为我们的数据库。在安装 PostgreSQL 之后,我们需要创建一个新的数据库。我们可以使用以下命令创建一个新的数据库:
createdb mydatabase
在创建数据库之后,我们需要创建一个新的 Prisma 项目。我们可以使用以下命令创建一个新的 Prisma 项目:
prisma init myproject
在创建项目之后,我们需要修改 prisma/schema.prisma
文件,以便 Prisma 可以连接到我们的数据库。我们可以使用以下代码来修改 prisma/schema.prisma
文件:
datasource db { provider = "postgresql" url = "postgresql://localhost/mydatabase" } generator client { provider = "prisma-client-js" }
在修改 prisma/schema.prisma
文件之后,我们可以使用以下命令来生成 Prisma 客户端:
prisma generate
创建 GraphQL 服务器
在设置好数据库之后,我们可以开始创建 GraphQL 服务器。在本文中,我们将使用 Apollo Server 作为 GraphQL 服务器。我们可以使用以下命令安装 Apollo Server:
npm install apollo-server graphql
在安装 Apollo Server 之后,我们可以开始创建 GraphQL 服务器。我们可以使用以下代码创建 GraphQL 服务器:
// javascriptcn.com 代码示例 import { ApolloServer, gql } from 'apollo-server'; import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); const typeDefs = gql` type Query { users: [User!]! } type User { id: ID! name: String! email: String! } `; const resolvers = { Query: { users: async () => { return prisma.user.findMany(); }, }, }; const server = new ApolloServer({ typeDefs, resolvers, }); server.listen().then(({ url }) => { console.log(`Server ready at ${url}`); });
在上面的代码中,我们首先导入了 ApolloServer
和 gql
,然后创建了一个名为 prisma
的 Prisma 客户端。接下来,我们定义了一个名为 typeDefs
的 GraphQL 类型定义,其中包含了一个名为 Query
的查询类型和一个名为 User
的用户类型。最后,我们定义了一个名为 resolvers
的解析器,用于解析查询。在创建完类型定义和解析器之后,我们创建了一个新的 Apollo Server,并将类型定义和解析器传递给它。最后,我们调用 listen
方法来启动服务器。
使用 Prisma 和 GraphQL 构建完整的应用程序
现在我们已经设置好了数据库和创建了 GraphQL 服务器,我们可以开始使用 Prisma 和 GraphQL 构建完整的应用程序了。在本文中,我们将创建一个简单的用户管理应用程序,其中包含以下功能:
- 添加用户
- 更新用户
- 删除用户
- 获取所有用户
我们可以使用以下代码来实现这些功能:
// javascriptcn.com 代码示例 import { ApolloServer, gql } from 'apollo-server'; import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); const typeDefs = gql` type Query { users: [User!]! } type Mutation { createUser(name: String!, email: String!): User! updateUser(id: ID!, name: String, email: String): User! deleteUser(id: ID!): User! } type User { id: ID! name: String! email: String! } `; const resolvers = { Query: { users: async () => { return prisma.user.findMany(); }, }, Mutation: { createUser: async (_, { name, email }) => { return prisma.user.create({ data: { name, email, }, }); }, updateUser: async (_, { id, name, email }) => { return prisma.user.update({ where: { id, }, data: { name, email, }, }); }, deleteUser: async (_, { id }) => { return prisma.user.delete({ where: { id, }, }); }, }, }; const server = new ApolloServer({ typeDefs, resolvers, }); server.listen().then(({ url }) => { console.log(`Server ready at ${url}`); });
在上面的代码中,我们首先定义了一个名为 Mutation
的 GraphQL 变异类型,其中包含了 createUser
、updateUser
和 deleteUser
三个变异器。然后,我们定义了名为 resolvers
的解析器,用于解析变异器。在解析器中,我们使用 Prisma 客户端来执行数据库操作。最后,我们创建了一个新的 Apollo Server,并将类型定义和解析器传递给它。
总结
在本文中,我们介绍了如何使用 Prisma 和 GraphQL 构建完整的应用程序。我们首先安装了 Prisma,并设置了一个新的数据库。然后,我们使用 Apollo Server 创建了一个 GraphQL 服务器,并使用 Prisma 客户端来执行数据库操作。最后,我们使用 Prisma 和 GraphQL 构建了一个完整的用户管理应用程序。通过本文的学习,您可以了解如何使用 Prisma 和 GraphQL 构建现代化的应用程序,并在实践中掌握相关技能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6513156495b1f8cacdb91b9f