GraphQL 是一种用于 API 的查询语言,它提供了一种更加高效、强大、灵活的数据查询方式。MongoDB 是一种流行的 NoSQL 数据库,它在 Web 应用程序中被广泛使用。本文将介绍如何使用 GraphQL 查询 MongoDB 文档,以及如何在前端应用程序中使用这些数据。
准备工作
在开始之前,您需要安装以下软件:
- Node.js
- MongoDB
- GraphQL
您还需要选择一个 GraphQL 客户端。在本文中,我们将使用 Apollo Client。您可以通过以下命令来安装:
npm install apollo-client graphql graphql-tag --save
连接 MongoDB 数据库
在开始查询之前,我们需要连接到 MongoDB 数据库。我们将使用 Mongoose,这是一个 MongoDB 对象文档映射器。您可以使用以下命令来安装 Mongoose:
npm install mongoose --save
然后,我们可以编写以下代码来连接数据库:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true }) .then(() => console.log('MongoDB Connected')) .catch(err => console.log(err));
这将连接到名为“mydatabase”的本地 MongoDB 数据库。
创建 GraphQL Schema
现在我们需要创建一个 GraphQL Schema,以便定义我们要查询的数据。在本例中,我们将创建一个简单的“User”模型,并为其定义 GraphQL 类型。以下是我们的代码:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- - --- - - --------------------------------- ----- -------- - ---- ---- ---- - --- --- ----- ------- ------ ------- - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ----------- - -- ----- ------ - ---------------------- --------- --------- --- -------------- - -------
在这个例子中,我们定义了一个“User”类型,它有一个 ID、一个名称和一个电子邮件地址。我们还定义了一个“Query”类型,它允许我们查询所有用户。我们还提供了一个名为“users”的解析器函数,它将返回所有用户。
创建 GraphQL 服务器
现在我们需要创建一个 GraphQL 服务器,以便我们可以查询数据。我们将使用 Express 和 Apollo Server 来创建服务器。以下是我们的代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ------------ - - --------------------------------- ----- ------ - -------------------- ----- ---- - ------------------------- ----- --- - ---------- ----- ------ - --- -------------- ------- -------- -- -- -- ---- -- --- ------------------------ --- --- ------------ ----- ---- -- -- -- --------------- ------ ----- -- -------------------------------------------- --
在这个例子中,我们创建了一个 Express 应用程序,然后创建了一个 Apollo Server。我们将我们之前创建的 GraphQL Schema 传递给服务器,并将 User 模型传递给上下文。最后,我们将服务器应用到 Express 应用程序上,并在端口 4000 上启动应用程序。
查询数据
现在我们可以查询我们的数据了。我们可以使用 GraphQL Playground 或任何其他 GraphQL 客户端来查询数据。以下是一些示例查询:
query { users { id name email } }
这将返回所有用户的 ID、名称和电子邮件地址。
query { user(id: "123") { name email } }
这将返回 ID 为“123”的用户的名称和电子邮件地址。
结论
通过使用 GraphQL 和 MongoDB,我们可以轻松地查询数据库中的数据,并将其用于我们的前端应用程序。在本文中,我们介绍了如何连接到 MongoDB 数据库、定义 GraphQL Schema、创建 GraphQL 服务器以及查询数据。希望这篇文章对您有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6765449e76af2b9a20eabd4f