如何使用 GraphQL 和 Prisma 构建数据库访问层

前言

作为一名前端工程师,我们经常需要处理数据,而数据库是存储数据的重要部分之一。通常情况下,前端工程师需要调用后端 API 才能访问数据库中的数据。而在一些小型项目中,通过使用 GraphQL 和 Prisma,前端开发人员也可以轻松地构建自己的数据库访问层。

在本文中,我们将介绍如何使用 GraphQL 和 Prisma 构建数据库访问层,并提供示例代码帮助你理解如何实现。

GraphQL 简介

GraphQL 是一种数据查询语言,由 Facebook 开发而来。相对于传统的 REST API,GraphQL 具有更高的灵活性和可扩展性。GraphQL 的核心思想是 “只请求所需数据”,前端开发人员可以仅仅请求需要的数据,并仅仅获取所需的数据,而不用像 REST API 那样获取整个数据资源的所有数据。

比如,假设我们需要获取一篇文章的信息,我们可以使用以下查询:

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

GraphQL 会从数据库中获取所请求的数据,并将其以 JSON 对象的形式返回。前端开发人员可以根据这些数据来渲染 UI。

Prisma 简介

Prisma 是一个开源的 ORM(对象关系映射)工具,它可以自动生成 GraphQL API 和数据库访问层。使用 Prisma,我们可以简化数据库连接和数据管理,甚至可以跳过后端开发人员,直接使用 Prisma 与数据库进行交互。

Prisma 支持多种数据库,包括 MySQL、PostgreSQL 和 SQLite 等。在本文中,我们将以 PostgreSQL 为例进行讲解。

使用 Prisma 构建 GraphQL API

在介绍如何使用 Prisma 构建 GraphQL API 之前,我们需要先确保已安装以下软件:

  • Node.js(版本不低于 10)
  • Docker

安装完成后,我们可以使用以下命令来创建一个新的 Prisma 项目:

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

执行以上命令后,Prisma CLI 会引导你完成项目初始化过程,并且创建一个空的 Prisma 服务。接着,我们可以在 prisma/schema.prisma 文件中定义我们的数据模型,例如:

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

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

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

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

在上述数据模型中,我们定义了 User、Post 和 Comment 三个数据模型,每个数据模型都包含多个属性。例如,Post 数据模型中包含了 title、content 和 author 三个属性,其中 author 属性与 User 数据模型建立了数据关系。

接着,我们可以使用 Prisma CLI 来创建数据库迁移并将数据模型应用到数据库中:

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

执行以上命令后,Prisma CLI 将会创建一个数据库迁移,并将我们定义的数据模型应用到数据库中。接着,我们可以使用以下命令来启动 Prisma 服务:

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

执行以上命令后,Prisma 会启动一个本地的 web 服务,我们可以通过访问 http://localhost:5555 在浏览器中打开 Prisma Studio,用于管理数据库中的数据。

到这里,我们已经成功地使用 Prisma 创建了数据库,并在其中应用了我们定义的数据模型。

使用 GraphQL 查询数据

在我们成功创建数据库之后,我们可以开始使用 GraphQL 来查询数据库中的数据。为了使用 GraphQL,我们需要安装 graphql-yoga 这个库:

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

接着,我们可以创建一个 index.js 文件,并添加以下代码:

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

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

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

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

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

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

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

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

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

在以上代码中,我们定义了一个 GraphQL 服务器,它包含三个数据查询字段(users、posts 和 comments)以及三个数据模型(User、Post 和 Comment)。

每个数据查询字段都对应了一个 Prisma 客户端方法,用于获取数据库中的数据。而每个数据模型字段都包含了一个 resolver 函数,它与 Prisma 数据库的查询方法对应。

接着,我们可以使用以下命令来启动 GraphQL 服务器:

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

执行以上命令后,GraphQL 服务器将会启动,并将使用 Prisma 客户端方法来查询数据库中的数据。我们可以通过访问 http://localhost:4000 来打开 GraphQL Playground,尝试使用 GraphQL 查询数据。

例如,假设我们需要获取所有用户的信息,我们可以使用以下查询:

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

GraphQL 服务器将返回一个 JSON 对象,其中包含了查询结果。

结论

通过使用 GraphQL 和 Prisma,前端工程师可以轻松构建自己的数据库访问层,而无需专业的后端开发人员帮助。在这篇文章中,我们详细介绍了如何使用 GraphQL 和 Prisma 构建数据库访问层,并提供了示例代码帮助你理解如何实现。希望这篇文章能够对你在构建前端项目时有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671a21469babaf620fa1751e