前言
GraphQL Yoga 是一个完整的 GraphQL 服务器,它是基于 Express 和 Apollo Server 的一个集成体,它能够帮助你更容易地构建 GraphQL API。
Deno 是一个现代化的 JavaScript 和 TypeScript 运行时程序,可以在浏览器和服务器上运行。
在这篇文章中,我们将会介绍如何在 Deno 中使用 GraphQL Yoga。
步骤
安装 Deno
首先,需要安装 Deno 运行时。可以在 Deno 的官网上下载并安装最新版本的 Deno。
安装 GraphQL Yoga
安装 Graphql Yoga 的命令如下:
---- ------- --- ---------- ---------------------------------------
创建你的 GraphQL 服务器
在 Deno 中,我们可以使用 TypeScript 来编写 GraphQL 服务器。
下面是一个简单的示例,用于创建一个 GraphQL 服务器:
------ - ---- - ---- ------------------------------------------ ----- -------- - - ---- ----- - ----------- -------- ------- - -- ----- --------- - - ------ - ------ --- ---- - ---- -- ---- -- ------ ------ -- ----------- -- -- ----- ---- - --- ------ --------- --------- --- -------------------- ----- ---- ---------- -- - --------------- ------ ----- -- ------------------------ ---
在上面的代码中,我们定义了类型定义和解析器,并初始化了一个 Yoga 实例。最后,我们使用 yoga.createHandler({ port: 4000 })
创建了一个 GraphQL API 网络服务器,并在 4000 端口声明。
接下来,我们来执行这个文件以启动服务器:
---- --- ----------- ------
然后可以访问 http://localhost:4000/
验证服务器是否已经启动。
现在,我们可以在浏览器中打开 GraphQL Playground ,访问 http://localhost:4000/playground
,进行 API 接口测试:
添加更多的模型和解析器
现在我们已经成功地创建了一个 GraphQL 服务器。接下来,我们将会添加更多的类型定义和解析器。
我们要实现的目标是创建一个 GraphQL API,允许用户查询和添加人的信息。
下面是一个示例数据模型:
--------- ------ - --- ------- ----- ------- ---- ------- - ----- -------- -------- - - - --- ---- ----- -------- ---- -- -- - --- ---- ----- ------ ---- -- -- - --- ---- ----- ---------- ---- -- -- --
现在,我们要在 GraphQL 中实现以下查询和修改:
- 查询所有的人
- 根据人的 ID 查询人
- 添加新的人
首先,我们定义两个类型 Person
和 Query
,并对 Query
进行扩展以包含我们要实现的查询。
---- ------ - --- --- ----- ------- ---- ---- - ---- ----- - ---------- ----- ------ -------- ---------- -
person
查询根据 ID 返回一个人,persons
查询返回所有人。
然后,我们需要编写查询解析器。
----- --------- - - ------ - ------- --- ---- - -- -- ---- -- ---------------- -- ---- --- -------------- -------- -- -- -------- -- --
接下来,我们实现一个 mutation 类型,用于添加新的人。
---- -------- - --------------- -------- ---- ------ ------- -
然后,我们需要编写解析器来处理该 mutation。
----- --------- - - ------ - --- -- --------- - ---------- --- ---- - ----- --- -- ---- -- - ----- -- - --------------- - -------------- ----- ------ - - --- ----- --- -- --------------------- ------ ------- -- -- --
连接到数据库
现在,我们已经能够成功地编写了基本的 GraphQL 服务器,让用户能够查询和修改人的信息。但是,我们可能希望将此应用程序连接到数据库,以便数据可以持久化,并使用真实的数据来填充服务器。
在 Deno 中,可以使用一些第三方驱动程序来连接到不同类型的数据库,如 MongoDB、MySQL、PostgreSQL 等。
这里,我们将使用 MongoDB 作为我们的数据存储。
第一步是在 MongoDB Atlas 上注册一个免费的帐户并创建一个免费的集群。当你完成这个步骤后,你将获得一个连接字符串,用于连接你的服务器到 MongoDB。
接下来,我们需要安装 MongoDB 的驱动程序,用于与数据库进行连接。Deno 中的 MongoDB 驱动程序是标准的 JavaScript 接口,可通过以下命令进行安装。
---- ------- --- ---------- --------------------------------
现在,我们需要更新我们的模型和解析器,以便使用 MongoDB 来存储人的信息。
------ - ----------- - ---- ----------------------------------- --------- ------ - ---- - ----- ------ -- ----- ------- ---- ------- - ----- ------ - --- -------------- ----- ------------------------- ----- -- - --------------------------- ----- ------- - --------------------------------- ----- -------- - - ---- ------ - --- --- ----- ------- ---- ---- - ---- ----- - ---------- ----- ------ -------- ---------- - ---- -------- - --------------- -------- ---- ------ ------- - -- ----- --------- - - ------ - ------- --- ---- - -- -- ---- -- ----------------- ---- - ----- -- - --- -------- -- -- --------------- -- --------- - ---------- ----- --- ---- - ----- --- -- ---- -- - ----- -- - --- ---------------------------- ----- ------- ------ - - ---- - ----- -- -- ----- --- -- ----- -------------------------- ------ ------- -- -- --
在上面的代码中,我们使用 MongoClient
连接到 MongoDB,然后使用 db.collection
方法获取我们的集合 persons
。然后,我们更新了模型和解析器,以便使用 MongoDB 来存储数据。
验证
现在,我们已经完成了与 MongoDB 数据库的连接,我们可以运行我们的 Deno 服务器,然后使用 GraphQL Playground 进行测试。
在 Playground 中,我们可以尝试运行一些查询和修改操作。
-------- - --------------- -------- ---- --- - ---- --- - - ----- - ------- - ---- --- - ---------- --------------------------- - ---- --- - -
现在,我们已经成功地在 Deno 中创建了一个 GraphQL 服务器,该服务器连接到了 MongoDB 数据库。
结论
在这篇文章中,我们介绍了如何在 Deno 中使用 GraphQL Yoga 构建一个 GraphQL 服务器,并连接到 MongoDB 数据库。我们还演示了如何编写查询和修改操作并验证我们的服务器是否按预期工作。
GraphQL Yoga 是一个非常强大的工具,可以帮助我们更轻松地构建和扩展 GraphQL 服务器,而 Deno 则提供了一个现代的 JavaScript 运行时环境,可以轻松的在浏览器和服务器中运行我们的代码。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66f4cd94c5c563ced565527c