GraphQL 是一种由 Facebook 开发的数据查询和操作语言,它可以让前端和后端之间的数据交互更加高效和灵活。在本文中,我们将会介绍如何使用 Node.js 和 Typeorm 构建一个 GraphQL API,并实现基本的 CRUD 操作。
准备工作
在开始构建 GraphQL API 之前,我们需要先安装一些必要的工具和库:
Node.js:我们需要安装 Node.js 运行环境,以便在本地运行我们的应用程序。
Typeorm:Typeorm 是一个 TypeScript 和 JavaScript 的 ORM 框架,它可以帮助我们更方便地操作数据库。
GraphQL:GraphQL 是一个用于 API 的查询语言和运行时,它可以让我们更方便地查询和操作数据。
Express:Express 是一个 Node.js 的 Web 框架,它可以帮助我们更方便地构建 Web 应用程序。
我们可以通过以下命令来安装这些依赖:
npm install --save typeorm graphql express
数据库设置
在我们开始构建 GraphQL API 之前,我们需要先设置好数据库。在本文中,我们将使用 MySQL 作为我们的数据库。
我们可以通过以下命令来安装 MySQL:
sudo apt-get install mysql-server
安装完成后,我们需要创建一个数据库,以便我们在应用程序中使用。我们可以使用以下命令来创建一个名为 graphql_demo
的数据库:
mysql -u root -p CREATE DATABASE graphql_demo;
创建实体
在我们开始构建 GraphQL API 之前,我们需要先创建一些实体,以便我们在应用程序中使用。在本文中,我们将创建一个 User
实体,它包含了用户的姓名和电子邮件地址。
我们可以使用以下命令来创建一个 User
实体:
typeorm entity:create -n User
然后,我们需要在 User
实体中定义一些属性。我们可以在 src/entity/User.ts
文件中添加以下代码:
-- -------------------- ---- ------- ------ - ------- ----------------------- ------ - ---- ---------- --------- ------ ----- ---- - ------------------------- --- ------- --------- ----- ------- --------- ------ ------- -
创建 GraphQL Schema
在我们开始构建 GraphQL API 之前,我们需要先创建一个 GraphQL Schema,以便我们在应用程序中使用。在本文中,我们将创建一个 User
Schema,它包含了查询和操作用户的方法。
我们可以在 src/schema/user.graphql
文件中添加以下代码:
-- -------------------- ---- ------- ---- ---- - --- --- ----- ------- ------ ------- - ---- ----- - ------ -------- -------- ----- ---- - ---- -------- - ---------------- -------- ------ --------- ----- -------------- ---- ----- ------- ------ -------- ----- -------------- ----- ------- -
创建 GraphQL Resolver
在我们开始构建 GraphQL API 之前,我们需要先创建一个 GraphQL Resolver,以便我们在应用程序中使用。在本文中,我们将创建一个 User
Resolver,它包含了查询和操作用户的方法。
我们可以在 src/resolver/UserResolver.ts
文件中添加以下代码:
-- -------------------- ---- ------- ------ - --------- ------ --------- --- - ---- --------------- ------ - ---- - ---- ----------------- ----------- ------ ----- ------------ - --------- -- ------- ------- - ------ ------------ - --------- -- ----- - --------- ---- -- --------------- --- ------- - ------ ----------------- - ------------ -- ----- ----- ----------------------- ----- ------- ------------- ------ ------- - ----- ---- - ------------- ----- ----- --- ----- ------------ ------ ----- - ------------ -- ----- - --------- ---- -- ----- --------------------- --- ------- ------------ ----- ------- ------------- ------ ------- - ----- ---- - ----- ----------------- -- ------- - ------ ----- - --------- - ---- -- ---------- ---------- - ----- -- ----------- ----- ------------ ------ ----- - ------------ -- -------- ----- --------------------- --- ------- - ----- ---- - ----- ----------------- -- ------- - ------ ------ - ----- -------------- ------ ----- - -
创建 Express 应用程序
在我们开始构建 GraphQL API 之前,我们需要先创建一个 Express 应用程序,以便我们在应用程序中使用。在本文中,我们将创建一个 server.ts
文件,它包含了启动服务器的方法。
我们可以在 src/server.ts
文件中添加以下代码:
-- -------------------- ---- ------- ------ ------------------- ------ - ---------------- - ---- ---------- ------ - ------------ - ---- ------------------------ ------ - ----------- - ---- --------------- ------ - ------------ - ---- -------------------------- ----- ---- - ----- -- -- - ----- ---------- - ----- ------------------- ----- --------------------------- ----- ------ - ----- ------------- ---------- --------------- --------------- ----- --------- ------ --- ----- ------ - --- -------------- ------ --- ----- --- - ---------- ------------------------ --- --- ---------------- -- -- - ------------------- ------- -- -------------------------------- --- -- -------------------- -- - ------------------- ---
测试 GraphQL API
在我们完成了上述步骤之后,我们可以运行以下命令来启动服务器:
npm start
然后,我们可以在浏览器中访问 http://localhost:4000/graphql
,以便使用 GraphQL Playground 工具测试我们的 API。
我们可以使用以下查询来获取所有用户的信息:
query { users { id name email } }
我们可以使用以下查询来获取特定用户的信息:
query { user(id: 1) { id name email } }
我们可以使用以下操作来创建一个新用户:
mutation { createUser(name: "John Doe", email: "john.doe@example.com") { id name email } }
我们可以使用以下操作来更新一个现有用户的信息:
mutation { updateUser(id: 1, name: "John Smith", email: "john.smith@example.com") { id name email } }
我们可以使用以下操作来删除一个现有用户:
mutation { deleteUser(id: 1) }
结论
在本文中,我们介绍了如何使用 Node.js 和 Typeorm 构建一个 GraphQL API,并实现了基本的 CRUD 操作。通过本文的学习,我们可以更好地了解 GraphQL 的使用方法,并在实际项目中应用它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67427b62db344dd98dd9e478