npm 包 graphql-yoga-waterline 使用教程

前言

在前端开发中,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


猜你喜欢

  • npm 包 @graphile/federation 使用教程

    在前端类开发中,有许多方便的工具和包可以使用,例如 @graphile/federation,这是一个非常方便的 npm 包,它可以帮助开发者更好地协作和构建大型的 GraphQL API。

    5 年前
  • npm 包 graphql-shield 使用教程

    GraphQL 在现代 Web 开发中越来越受欢迎,但是访问控制是每个 GraphQL 应用都需要的一个关键方面。graphql-shield 是一个流行的 npm 包,它可以帮助我们轻松地保护我们的...

    5 年前
  • npm 包 @alu0100888447/auth 使用教程

    前言 在现代前端开发中,用户认证是非常重要的一环。随着单页应用程序越来越流行,前端用户认证的需求也越来越大。@alu0100888447/auth 是一个非常方便的 npm 包,可以帮助我们快速地进行...

    5 年前
  • npm 包 47pages-keystone 使用教程

    概述 47pages-keystone 是一个基于 Node.js 的前端框架,它提供了一系列简单易用的工具和功能,帮助开发者快速创建高质量的网站。这个框架拥有强大的插件机制,可以快速扩展和定制各种功...

    5 年前
  • npm 包 @warp-works/warpjs-utils 的使用教程

    简介 在前端领域中,用于构建网站和应用程序的包已经非常普遍。npm 是一个广泛使用的包管理器,用于安装和管理这些包。本教程将介绍来自 npm 上的一个工具包 @warp-works/warpjs-ut...

    5 年前
  • npm包 @warp-works/warpjs-plugins使用教程

    介绍 在前端开发中,我们常常会用到各种npm包来辅助我们的开发工作。其中,@warp-works/warpjs-plugins是一款非常实用的工具包。该包主要提供了一些常用的插件,如:表格插件、搜索插...

    5 年前
  • npm 包 @quoin/expressjs-routes-info 使用教程

    在使用 Express.js,也许会遇到一个问题,那就是不容易对路由和中间件进行诊断和调试。@quoin/expressjs-routes-info 这个 npm 包的作用就是解决这个问题,它可以在终...

    5 年前
  • npm 包 @quoin/node-test-helpers 使用教程

    简介 npm 是一个 Node.js 包管理器,可以为 Node.js 系统提供各种便捷的包。@quoin/node-test-helpers 是用于编写 Node.js 单元测试的 npm 包,提供...

    5 年前
  • npm 包 @quoin/eslint-config-quoin 使用教程

    简介 在前端开发中,代码质量的高低直接影响到项目的可维护性和可扩展性。因此,在项目开发过程中,我们通常会使用一些静态代码分析工具(比如 ESLint)来检查代码质量,避免常见的错误和问题。

    5 年前
  • npm 包 dht.js 使用教程

    简介 dht.js 是一个基于 Node.js 的分布式哈希表(DHT)实现。它可以轻松地在多个节点之间分布键值对,并提供了一些用于查询和操作 DHT 的 API。

    5 年前
  • npm 包 dht-bencode 的使用教程

    DHT-bencode 是一个 Node.js 模块,用于对 BitTorrent dht 网络的 bencode 格式的消息进行编解码。本文将提供详细的 dht-bencode 的使用教程,包括编码...

    5 年前
  • 前端必备工具 —— npm 包 btparse 使用教程

    在前端开发中,我们经常需要解析一个复杂的文本字符串。手动解析不仅会增加开发难度,还极易出错。为了解决这个问题,我们可以使用 npm 包 btparse。 什么是 btparse? btparse 是一...

    5 年前
  • npm 包 bncode 使用教程

    介绍 bncode 是一个在 BitTorrent 协议中使用的编码方式。它可以将一些复杂的数据类型编码成二进制字符串,方便在网络上传输和存储。npm 包 bncode 实现了 bncode 的编码和...

    5 年前
  • NPM 包 Bencoding 的使用教程

    Bencoding 是一个可以将字节流编码/解码为 JavaScript 对象的 NPM 包。它可以被用于解析 BitTorrent 协议中的元数据文件(.torrent 文件),也可以被用于其他需要...

    5 年前
  • npm 包 @types/socket.io 使用教程

    在前端开发中,我们经常需要使用 Socket.IO 实现实时通信功能。而在 TypeScript 项目中,我们需要定义和使用 Socket.IO 事件和其它相关类型。

    5 年前
  • NPM 包 @types/config 使用教程

    在前端开发中,我们经常需要配置一些变量、参数或者环境信息。而 @types/config 就是一个帮助我们管理配置信息的 NPM 包。 安装 @types/config 在使用 @types/conf...

    5 年前
  • npm 包 @types/bcryptjs 使用教程

    在前端开发中,数据的存储与保护是至关重要的。对于密码等敏感数据的加密,我们可以使用 bcryptjs 这个 npm 包。在 TypeScript 项目中,为了提高代码的类型安全性,我们需要安装 @ty...

    5 年前
  • npm 包 @types/jsonwebtoken 使用教程

    在前端开发中,安全性是非常重要的一个方面。为了保护用户数据不被泄露,我们常常使用颁发的 JWT(JSON Web Token)来进行身份验证和访问控制。而在 TypeScript 开发时,则需要使用 ...

    5 年前
  • npm 包 @types/swiper 使用教程

    Swiper 是一个流行的现代滑动视图框架,它可以帮助我们创建各种类型的交互式、移动友好的 Web 应用程序。而 @types/swiper 就是 Swiper 在 TypeScript 中的类型定义...

    5 年前
  • npm 包 @stencil/utils 使用教程

    简介 @stencil/utils 是一个基于 Stencil 的工具包,其中包含了一些常用的工具方法,如 generateUniqueId、hasShadowDom、isIE、raf、removeA...

    5 年前

相关推荐

    暂无文章