在 Deno 中如何使用 GraphQL?

阅读时长 6 分钟读完

GraphQL 是一种用于 API 的查询语言,它不仅可以规定查询,还可以规定返回结果的形式。与传统的 RESTful API 相比,GraphQL 灵活性更高,数据传输效率更高。

Deno 是一种现代的 TypeScript 运行时,可以用来构建后端和前端应用程序,它与 Node.js 相比,具有更高的性能、更好的稳定性和更多的安全性。

在本文中,我们将探讨如何在 Deno 中使用 GraphQL。

安装 GraphQL

在 Deno 中使用 GraphQL,我们首先需要安装相应的库。 为此,我们可以使用 Deno 的模块管理器 deno.land/x,在终端中输入以下命令:

创建 GraphQL 服务器

成功安装 GraphQL 后,我们就可以开始构建 GraphQL 服务器了。

在 Deno 中,我们可以使用 Oak 框架来构建 GraphQL 服务器。Oak 是一个基于中间件的框架,可以实现复杂的 HTTP 处理逻辑。

为了使用 Oak 框架,我们需要在 Deno 中安装相应的库。在终端中输入以下命令:

然后,我们可以创建一个名为 server.ts 的文件,在其中实现一个简单的 GraphQL 服务器:

-- -------------------- ---- -------
------ - ----------- - ---- ---------------------------------
------ - ------------- --- - ---- -------------------------------------
 
----- --- - --- --------------
 
----- ----- - ----
  ---- ----- -
    ------ -------
  -
--
 
----- --------- - -
  ------ -
    ------ -- -- ------ -------
  -
--
 
----- -------------- - ----- --------------
  --------- ------
  ---------- ----------
---
 
-------------------------------- ---------------------------------
---------------- ---------- --------------------------------
----- ------------ ----- ---- ---
展开代码

在上述代码中,我们首先从 Oak 和 GraphQL 库中导入需要的模块。然后,我们定义一个简单的 GraphQL 查询,用于返回一个字符串“Hello World!”。

最后,我们创建了一个 GraphQL 服务,并使用 Oak 框架将 GraphQL 服务和端口 8000 关联起来。 运行 deno run --allow-net server.ts 后,在浏览器中打开 http://localhost:8000/graphql,我们就可以看到 GraphQL Playground 页面了。

在左侧的编辑器中,我们可以输入 GraphQL 查询语句,并在右侧的窗口中获得查询结果。 在这种情况下,我们可以在编辑器中键入以下查询:

运行查询后,我们将得到以下结果:

集成 MongoDB 数据库

在 Deno 中使用 MongoDB 数据库,我们可以使用第三方的库 mongo。它是一个基于 Promise 的 MongoDB 驱动程序,具有简单、清晰的 API。

在终端中输入以下命令,以安装 mongo 库:

然后我们可以集成 MongoDB 数据库的功能到我们的 GraphQL 服务器中。在下面的示例中,我们将创建一个 users 集合,其中包含一些用户对象。我们还将实现一个简单的 GraphQL 查询,用于返回用户列表。让我们来看一下代码:

-- -------------------- ---- -------
------ - ----------- - ---- ---------------------------------
------ - ------------- --- - ---- -------------------------------------
------ - ----------- - ---- -----------------------------------
 
----- --- - --- --------------
 
----- ----- - ----
  ---- ---- -
    --- -------
    ----- -------
  -
 
  ---- ----- -
    ------ --------
  -
--
 
----- --------- - -
  ------ -
    ------ ----- -- -- -
      ----- ------ - --- --------------
      ----- --------------------------------------------
 
      ----- -- - -------------------------
      ----- ----- - -----------------------
 
      ------ ----- ---------------
    -
  -
--
 
----- -------------- - ----- --------------
  --------- ------
  ---------- ----------
---
 
-------------------------------- ---------------------------------
---------------- ---------- --------------------------------
----- ------------ ----- ---- ---
展开代码

在上述代码中,我们定义了一个名为 User 的 GraphQL 类型,其中包括一个用户的 idname 字段。我们还定义了一个名为 users 的查询,用于从 MongoDB 数据库中获取所有用户。

我们使用 mongo 库中的 MongoClient 类,与 MongoDB 数据库建立连接,并指定待操作的数据库和集合。 最后,我们返回了从数据库中获取的所有用户。

总结

在本文中,我们介绍了如何在 Deno 中使用 GraphQL。首先,我们从 Deno 的模块管理器 deno.land/x 安装了相关库。 然后,我们使用 Oak 框架和 applyGraphQL 函数创建了一个 GraphQL 服务器。我们还演示了如何将 MongoDB 集成到 GraphQL 服务器中,从而实现更复杂的数据操作。

虽然本文只提供了解决方案的示例代码,但它可以作为学习和使用 GraphQL 的入门指南。随着你的知识和技能的增长,你可以在 Deno 中构建更高级和更复杂的 GraphQL 服务器。

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

纠错
反馈

纠错反馈