npm 包 graphql-yoga-waterline 使用教程

阅读时长 6 分钟读完

前言

在前端开发中,GraphQL 是一种非常流行的数据查询语言,虽然原生 GraphQL 也能够支持数据存储,但它不能直接与数据库进行交互,因此需要结合其他解决方案来进行使用。本教程将介绍如何结合 npm 包 graphql-yoga 和 waterline ORM 来进行数据交互,使得使用 GraphQL 更加轻松便捷。

环境

在开始本教程前,请确保您的计算机上已经安装了 Node.js 和 npm 包管理器。

安装依赖包

首先需要安装以下依赖包:

  • graphql-yoga:一个基于 Express 和 GraphQL 构建的高性能 GraphQL 服务端。
  • waterline:一个支持多种数据库的 ORM 工具,包含抽象的数据模型和数据查询 API。

您可以使用以下命令进行安装:

配置

在开始使用 graphql-yoga 和 waterline 之前,需要先进行简单的配置。在项目根目录下创建一个名为 config.js 的文件,并输入以下内容:

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

其中,adaptersdatastores 分别指定了使用的数据库适配器和数据存储器的配置信息。在 url 中,您需要将 userpasswordhostportdatabase 分别替换为自己的 MySQL 数据库信息。

数据模型

接下来,需要定义数据模型以及数据查询 API。在项目根目录下创建一个名为 models.js 的文件,并输入以下内容:

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

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

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

在上述代码中定义了一个名为 User 的数据模型,包含 idnameemail 三个属性。identity 指定了模型的名称,datastore 指定了使用的数据存储器,在此处为 default,即先前配置文件中定义的 MySQL 数据库。autoIncrement 参数设置模型的 id 属性自增,确保每个用户实例拥有唯一的标识符。

GraphQL 服务

最后,需要实现 GraphQL 服务。在项目根目录下创建一个名为 index.js 的文件,并输入以下内容:

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

在上述代码中,首先通过 require 引入 graphql-yogawaterline 和定义的 models 对象。接下来,定义了 GraphQL 的类型和相应的 resolvers,包括 QueryMutation。在 Query 中,定义了 getUsergetUsers 两个方法,分别用于获取单个用户和所有用户,并且 id 参数为必填参数。在 Mutation 中,定义了 createUser 方法,用于创建新用户,并且 nameemail 参数为必填参数。最后,将 typeDefsresolvers 作为参数创建一个 GraphQLServer 实例,并在 models 初始化完成后启动 GraphQL 服务。

使用

在启动服务之后,可以通过浏览器访问 http://localhost:4000,并在 GraphQL Playground 中进行测试。以下是一些测试代码:

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

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

希望本教程对您学习 GraphQL 的数据库交互有所帮助,感谢阅读!

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