介绍
GraphQL 是一个用于 API 的查询语言,它提供了一种描述数据的方法,允许客户端按需请求需要的数据,而不是像传统的 RESTful API 那样一次性获取所有数据。在之前的文章中,我们已经介绍了 GraphQL 的基础知识和其它重要概念,这里我们将讨论如何在 GraphQL 中使用 MongoDB。
MongoDB 是一种 NoSQL 数据库,它是一个非常流行的数据库,特别适用于大数据应用程序。MongoDB 具有极高的可扩展性、灵活性和速度,并且支持 JSON 格式文档的存储,使得它与 GraphQL 的使用非常契合。
在本文中,我们将探讨如何在 GraphQL 中连接 MongoDB 数据库、定义模式和开发查询和突变的操作(CRUD)。我们将使用 Node.js 的 express-graphql
库。
环境搭建
在开始之前,我们需要确保电脑安装了 Node.js 和 MongoDB。如果你还没有,请先官网下载安装。同时,在开始前,我们需要确保使用 MongoDB shell 工具能够成功连接到 MongoDB 服务器。使用以下命令:
mongo --host {host} --port {port}
其中,{host}
是 MongoDB 服务器的主机名或 IP 地址,{port}
是 MongoDB 使用的端口号。如果连接成功,你将看到一个 MongoDB shell 终端。
接着,我们需要在本地创建一个新的 MongoDB 数据库。在终端中,使用以下命令:
use your_new_db_name
命令 use
将切换到新的数据库,后面的参数 {your_new_db_name}
就是你准备创建的数据库名称。完成后,退出 MongoDB shell 终端。
接下来,在本地创建一个新的 Node.js 应用程序,并在终端中导航到该目录。在命令行中输入以下命令来初始化该应用程序:
npm init -y
这将创建一个新的 package.json
文件,其中包含我们的应用程序的所有信息。
接下来,我们使用以下命令安装 express
和 express-graphql
:
npm install --save express express-graphql
安装完成后,创建一个名为 app.js
的新文件。我们将在其中编写我们的示例代码。
定义 MongoDB 模式
要在 GraphQL 中使用 MongoDB,我们首先需要定义一个 MongoDB 模式。在项目文件夹中,创建一个名为 models
的新文件夹,然后在其中创建一个名为 User.js
的新文件。
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- - ----- ------- --------- ----- -- ------ - ----- ------- --------- ----- -- --------- - ----- ------- --------- ----- -- ---------- - ----- ----- -------- ----------- -- ---------- - ----- ----- -------- ----------- -- --- -------------- - ---------------------- ------------
在这里,我们使用了 Mongoose 模块和一个用户模式。我们使用 Mongoose Schema
类来定义字段、类型和默认值,然后将该模式导出到我们的应用程序。
连接 MongoDB 数据库
要在我们的应用程序中使用 MongoDB,我们需要在应用程序启动时建立 MongoDB 数据库的连接。在 app.js
中,我们将执行以下操作:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- -------- - -------------------- ----- - ----------- - - ------------------- ----- ---- - ------------------------- ----- --- - ---------- ----- ---- - ---------------- -- ----- -- -- ------- -- ------ ----- ------ - ------------- ---- ----- - -------- --------- ---- ------ ------ - ---- -------- - ---------------- -------- ------ -------- --------- --------- ---- -------------- ---- ----- -------- ------ -------- --------- --------- ---- -------------- ----- ---- - ---- ---- - --- -- ----- ------ ------ ------ --------- ------ ---------- ------ ---------- ------ - --- -- -- ------- ---- ----- --------- - - ----- ----- -- -- -- -- ----- ------------------ ------ ----- -- -- ----- ------------ ----------- ----- -- ----- ------ -------- -- -- - ----- ------- - --- ------ ----- ------ --------- --- ------ ----- --------------- -- ----------- ----- -- --- ----- ------ -------- -- -- - ----- ---- - ----- ------------------ --------- - ----- ---------- - ------ ------------- - --------- ------ ----- ------------ -- ----------- ----- -- -- -- -- ----- --------------------------- -- -- ---- ------- --- -------- ------------------------------------------------------ - ---------------- ----- ------------------- ----- -- -------- -- - -------------------- ------------ -------- ----------- ------------- ------- ---------- --------- ----- -- -- ---------------- -- -- - ------------------- ------- -- ---- ---------- --- -- ------------ -- -------------------- ---------- -- -------- ----------
在这里,我们首先设置了 GraphQL 模式和查询操作。然后,我们将 User
模式导入应用程序,并使用以下代码将其与 GraphQL 一起使用:
-- -------------------- ---- ------- -- ---- ------- --- -------- ------------------------------------------------------ - ---------------- ----- ------------------- ----- -- -------- -- - -------------------- ------------ -------- ----------- ------------- ------- ---------- --------- ----- -- -- ---------------- -- -- - ------------------- ------- -- ---- ---------- --- -- ------------ -- -------------------- ---------- -- -------- ----------
这将建立与本地 MongoDB 数据库的连接以及与我们的 Express 应用程序的 GraphQL 接口。
测试 GraphQL API
完成上述步骤后,我们现在已经建立了一个使用 MongoDB 的 GraphQL API。我们可以使用任何支持 GraphQL 的客户端来测试它,例如 GraphiQL。
在浏览器中,输入以下地址:
http://localhost:5000/graphql
GraphiQL 将打开,并显示我们的 GraphQL 根查询和突变操作。接着,我们可以向其发送我们的查询和突变。
在这里,我们可以检索所有用户:
query { users { id name email password } }
我们还可以创建新用户:
-- -------------------- ---- ------- -------- - ---------------- -------- ------ -------------------- --------- ----------- - -- ---- ----- -------- --------- --------- - -
这将创建名为 Lucas 的新用户,并在完成后返回其详细信息,包括在数据库中创建的时间戳。我们还可以使用 updateUser
和 deleteUser
突变操作来更新和删除用户。
总结
以上就是如何在 GraphQL 中使用 MongoDB 的全部内容了。我们了解了如何定义 MongoDB 模式、连接到 MongoDB 数据库、开发 GraphQL 查询和突变操作,以及如何测试我们的 GraphQL API。希望这篇文章对于学习 GraphQL 和 MongoDB 很有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66560a65d3423812e4ab5c78