GraphQL 是一种新兴的数据查询语言,它可以帮助前端开发者更好地管理数据。而 MongoDB 是一种流行的 NoSQL 数据库,它具有高可扩展性、灵活性和性能优势。在本文中,我们将学习如何在 GraphQL 中使用 MongoDB 作为数据源。
为什么选择 MongoDB 作为 GraphQL 数据源?
在选择 GraphQL 数据源时,有很多不同的选择。为什么我们要选择 MongoDB 作为 GraphQL 数据源呢?
首先,MongoDB 是一种文档型数据库,它的数据结构非常灵活。这意味着可以轻松地存储和查询不同类型的数据,而不需要进行任何预定义的架构。这使得 MongoDB 成为一个非常适合 GraphQL 的数据源。
其次,MongoDB 具有高可扩展性。如果您的应用程序需要处理大量数据或需要处理高并发请求,那么 MongoDB 可以轻松地扩展以满足这些需求。
最后,MongoDB 具有出色的性能。它使用了内存映射文件系统,这意味着它可以非常快地读取数据。此外,MongoDB 还支持嵌套文档和数组,这使得查询非常快速和高效。
在 GraphQL 中使用 MongoDB
接下来,我们将学习如何在 GraphQL 中使用 MongoDB。我们将使用 Node.js 和 Express 框架来构建我们的 GraphQL API。
安装依赖
在开始之前,我们需要安装一些依赖项。首先,我们需要安装 express
和 express-graphql
模块,以及 graphql
和 mongodb
模块。您可以使用以下命令进行安装:
npm install express express-graphql graphql mongodb
连接到 MongoDB
在我们开始编写 GraphQL API 之前,我们需要连接到 MongoDB 数据库。我们可以使用 mongodb
模块来连接到 MongoDB,如下所示:
-- -------------------- ---- ------- ----- ----------- - ------------------------------- ----- --- - ---------------------------- ----- ------ - ------- ------------------------ ------------- ------- - -- ----- ----- ---- ----- -- - ------------------ -- --- ---- -- ------ ------- ------ --- --- ---- ---- --- ---
在上面的代码中,我们使用 MongoClient
类来连接到 MongoDB。我们将连接字符串指定为 mongodb://localhost:27017
,这是 MongoDB 的默认端口。我们还指定了数据库名称为 mydb
。
定义 GraphQL schema
接下来,我们需要定义 GraphQL schema。我们的 schema 将定义我们的数据类型以及我们将支持的查询和突变。我们将创建一个名为 schema.js
的文件,并将以下代码添加到其中:
-- -------------------- ---- ------- ----- - ------------------ -------------- ------------ ------------- - - ------------------- ----- -------- - --- ------------------- ----- ------- ------- - ---- - ----- ------------- -- ----- - ----- ------------- -- ------ - ----- ------------- -- -- --- ----- --------- - --- ------------------- ----- -------- ------- - ------ - ----- --- ---------------------- -------- ----- -- -- - ----- ------ - ----- ------------------------- ----- -- - ------------------ ----- ----- - ----- ---------------------------------------- --------------- ------ ------ -- -- -- --- -------------- - --- --------------- ------ ---------- ---
在上面的代码中,我们首先定义了一个名为 userType
的 GraphQLObjectType,它定义了我们的用户数据类型。我们定义了三个字段:_id
、name
和 email
。
接下来,我们定义了一个名为 queryType
的 GraphQLObjectType,它定义了我们将支持的查询。我们定义了一个名为 users
的查询,它将返回一个用户列表。我们使用 async
和 await
关键字来异步地连接到数据库,并使用 find()
方法获取 users
集合中的所有文档。
最后,我们将 queryType
添加到 GraphQLSchema 中,并导出它。
创建 GraphQL API
最后,我们需要使用 express-graphql
模块创建我们的 GraphQL API。我们将创建一个名为 server.js
的文件,并将以下代码添加到其中:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- --- - ---------- ------------------- ------------- ------- ------- --------- ----- ---- ---------------- -- -- -------------------- --- ------- -- ---------------------------------
在上面的代码中,我们首先导入 express
和 express-graphql
模块,以及我们上面定义的 schema
。我们创建一个名为 app
的 Express 应用程序,并将 /graphql
路由映射到 graphqlHTTP
中间件。
我们将 schema
传递给 graphqlHTTP
中间件,并将 graphiql
选项设置为 true
,以便我们可以使用 GraphiQL 工具来测试我们的 API。
最后,我们启动我们的应用程序并将其监听在端口 3000
上。
在 GraphiQL 中测试 API
现在我们已经完成了我们的 GraphQL API 的编写,我们可以使用 GraphiQL 工具来测试它。在浏览器中打开 http://localhost:3000/graphql
,您将看到 GraphiQL 工具的界面。
在左侧窗格中,您可以输入您的查询。例如,您可以输入以下查询:
{ users { _id name email } }
这将返回 users
集合中的所有用户,包括 _id
、name
和 email
字段。
结论
在本文中,我们学习了如何在 GraphQL 中使用 MongoDB 作为数据源。我们首先探讨了为什么选择 MongoDB 作为 GraphQL 数据源,然后介绍了如何使用 Node.js 和 Express 框架来构建我们的 GraphQL API。
我们定义了 GraphQL schema,并使用 express-graphql
模块创建了我们的 API。最后,我们使用 GraphiQL 工具来测试我们的 API,并成功地从 MongoDB 中检索了数据。
希望本文能够帮助您了解如何在 GraphQL 中使用 MongoDB 作为数据源,并为您构建 GraphQL API 提供指导。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675ef9c1e49b4d07162003b3