如何在 Deno 中使用 GraphQL 与 MongoDB 实现服务端开发?

阅读时长 8 分钟读完

GraphQL 是由 Facebook 开发的一种通过 API 来调用服务端数据的查询语言规范,近年来成为了前端开发中的热门技术之一。而 Deno 是由 Node.js 的创始人 Dennis M. Ritchie 开发的一个安全的 JavaScript/TypeScript 运行时环境。本文将介绍如何使用 Deno、GraphQL 和 MongoDB 来实现服务端开发,并提供详细的示例代码。

前置知识

在学习本文之前需要了解以下知识:

  • 基本的 Node.js 或 JavaScript/TypeScript 开发经验
  • GraphQL 的基本概念和使用方法
  • MongoDB 数据库及基本操作

安装 Deno

可以通过以下命令在 Unix、Linux 和 macOS 系统上安装 Deno:

在 Windows 系统上可以通过 PowerShell 安装:

安装完毕后可以通过以下命令检查 Deno 是否安装成功:

安装依赖

本文使用到的依赖有:

  • mongo:用于操作 MongoDB 数据库
  • oak:用于搭建基于 HTTP 和 WebSocket 的应用程序
  • graphql:GraphQL 的 JavaScript 实现

使用以下命令安装:

配置路由

首先需要在 app.ts 文件中配置路由,可以编写以下代码:

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

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

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

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

连接 MongoDB

app.ts 中可以编写以下代码来连接 MongoDB:

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

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

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

处理 GraphQL 请求

使用 graphql 包可以轻松地处理 GraphQL 请求,可以编写以下代码:

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

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

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

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

其中需要安装 TextDecoder

完整代码

以上是 Deno 中使用 GraphQL 和 MongoDB 实现服务端开发的主要代码,下面给出完整的 app.ts 代码:

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

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

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

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

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

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

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

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

总结

本文介绍了如何在 Deno 中使用 GraphQL 和 MongoDB 实现服务端开发。首先需要安装 Deno 并安装相关依赖,之后可以配置路由、连接 MongoDB 和处理 GraphQL 请求。使用 Deno、GraphQL 和 MongoDB 可以轻松地实现服务端开发,具有很好的可扩展性和可维护性,希望本文可以对读者有所帮助。

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

纠错
反馈