如何在 Sequelize 中使用 GraphQL?

阅读时长 7 分钟读完

在现代 Web 开发中,GraphQL 和 Sequelize 都是非常流行的技术。GraphQL 是一种查询语言,用于 API 的设计,而 Sequelize 是一个 Node.js ORM(对象关系映射)库,用于与关系型数据库交互。本文将介绍如何在 Sequelize 中使用 GraphQL。

为什么使用 GraphQL?

GraphQL 在 API 设计方面有很多优点。首先,它允许客户端精确地指定需要的数据,从而减少了不必要的数据传输。其次,GraphQL 支持多个查询和变异,因此可以通过单个请求来执行多个操作。最后,GraphQL 具有强大的类型系统,并且可以轻松地扩展和修改 API。

使用 Sequelize 和 GraphQL

使用 Sequelize 和 GraphQL 可以让我们轻松地将数据库数据暴露给客户端。下面是如何使用它们的详细步骤。

步骤 1:安装依赖项

首先,我们需要安装一些依赖项。在本例中,我们将使用 Express.js 作为 Web 框架,Sequelize 作为 ORM 库,graphql 和 express-graphql 作为 GraphQL 库。

步骤 2:创建数据库

我们需要创建一个数据库,并创建一个表来存储数据。在本例中,我们将创建一个名为 users 的表,其中包含 idnameemail 列。可以使用以下 SQL 语句在 MySQL 中创建此表:

步骤 3:创建 Sequelize 模型

接下来,我们需要使用 Sequelize 创建一个模型来表示 users 表。在 models/user.js 文件中,我们可以编写以下代码:

-- -------------------- ---- -------
----- - ---------- --------- - - ---------------------
----- --------- - --- -------------------------------------------------------------

----- ---- - ------------------------ -
  ----- -
    ----- -----------------
    ---------- -----
  --
  ------ -
    ----- -----------------
    ---------- -----
  -
---

-------------- - -----

在这里,我们首先创建了一个 Sequelize 实例,并使用它来定义一个名为 User 的模型。模型包含两个属性:nameemail,它们分别表示 users 表中的 nameemail 列。

步骤 4:创建 GraphQL Schema

接下来,我们需要创建一个 GraphQL Schema,用于定义可用的查询和变异。在 graphql/schema.js 文件中,我们可以编写以下代码:

-- -------------------- ---- -------
----- - ------------------ -------------- --------------- ------------ ------------- - - -------------------
----- ---- - --------------------------

----- -------- - --- -------------------
  ----- -------
  ------- -- -- --
    --- - ----- ------------- --
    ----- - ----- ------------- --
    ------ - ----- ------------- -
  --
---

----- --------- - --- -------------------
  ----- --------
  ------- -- -- --
    ------ -
      ----- --- ----------------------
      -------- -- -- --------------
    --
    ----- -
      ----- ---------
      ----- -
        --- - ----- --- ----------------------------- -
      --
      -------- --- ----- -- ----------------------
    -
  --
---

----- ------------ - --- -------------------
  ----- -----------
  ------- -- -- --
    ----------- -
      ----- ---------
      ----- -
        ----- - ----- --- ----------------------------- --
        ------ - ----- --- ----------------------------- -
      --
      -------- --- ----- -- -----------------
    -
  --
---

-------------- - --- ---------------
  ------ ----------
  --------- ------------
---

在这里,我们首先定义了一个名为 UserType 的 GraphQLObjectType,它表示一个用户对象。QueryType 包含两个查询:usersuserMutationType 包含一个变异:createUser。这些查询和变异都与 Sequelize 模型交互。

步骤 5:创建 Express.js 应用程序

最后,我们需要创建一个 Express.js 应用程序,并将 GraphQL Schema 添加到其中。在 app.js 文件中,我们可以编写以下代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----------- - ---------------------------
----- ------ - ----------------------------

----- --- - ----------

------------------- -------------
  -------
  --------- ----
----

---------------- -- -- ------------------- ------- -- ---- --------

在这里,我们创建了一个名为 app 的 Express.js 应用程序,并将 GraphQL Schema 添加到 /graphql 路由中。我们还启用了 GraphiQL,这是一个非常有用的 GraphQL IDE。

步骤 6:测试应用程序

现在,我们已经完成了所有步骤。我们可以使用以下命令启动应用程序:

然后,我们可以在浏览器中打开 http://localhost:3000/graphql,并尝试运行以下查询:

-- -------------------- ---- -------
----- -
  ----- -
    --
    ----
    -----
  -
-

----- -
  -------- ---- -
    ----
    -----
  -
-

-------- -
  ---------------- -------- ------ -------------------- -
    --
    ----
    -----
  -
-

这些查询和变异将返回我们在 users 表中创建的数据。

结论

在本文中,我们介绍了如何在 Sequelize 中使用 GraphQL。我们首先安装了必要的依赖项,然后创建了一个包含 users 表的数据库。接下来,我们创建了一个 Sequelize 模型和一个 GraphQL Schema,并将它们添加到 Express.js 应用程序中。最后,我们测试了应用程序,并成功地从数据库中检索和创建数据。

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

纠错
反馈