使用 Node.js 和 Typeorm 构建一个 GraphQL API

阅读时长 8 分钟读完

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 应用程序。

我们可以通过以下命令来安装这些依赖:

数据库设置

在我们开始构建 GraphQL API 之前,我们需要先设置好数据库。在本文中,我们将使用 MySQL 作为我们的数据库。

我们可以通过以下命令来安装 MySQL:

安装完成后,我们需要创建一个数据库,以便我们在应用程序中使用。我们可以使用以下命令来创建一个名为 graphql_demo 的数据库:

创建实体

在我们开始构建 GraphQL API 之前,我们需要先创建一些实体,以便我们在应用程序中使用。在本文中,我们将创建一个 User 实体,它包含了用户的姓名和电子邮件地址。

我们可以使用以下命令来创建一个 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

在我们完成了上述步骤之后,我们可以运行以下命令来启动服务器:

然后,我们可以在浏览器中访问 http://localhost:4000/graphql,以便使用 GraphQL Playground 工具测试我们的 API。

我们可以使用以下查询来获取所有用户的信息:

我们可以使用以下查询来获取特定用户的信息:

我们可以使用以下操作来创建一个新用户:

我们可以使用以下操作来更新一个现有用户的信息:

我们可以使用以下操作来删除一个现有用户:

结论

在本文中,我们介绍了如何使用 Node.js 和 Typeorm 构建一个 GraphQL API,并实现了基本的 CRUD 操作。通过本文的学习,我们可以更好地了解 GraphQL 的使用方法,并在实际项目中应用它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67427b62db344dd98dd9e478

纠错
反馈