在现代 Web 开发中,数据一直是一个核心问题。开发者们需要使用各种工具和技术来存储、查询和处理数据。GraphQL 和 MongoDB 都是当前非常流行的技术,它们可以共同构建一个完整的应用程序。
GraphQL 简介
GraphQL 是一种查询语言,可以让客户端精确地调用所需数据,并且可以在不改变 API 结构的情况下进行修改。相比传统的 RESTful API,它提供了更好的灵活性和可维护性。GraphQL 还有一个特性是类型系统,它可以让客户端和服务器之间进行类型检查以及智能化的自动完成。
MongoDB 简介
MongoDB 是一种非关系型数据库,它使用 BSON(二进制 JSON)格式来存储数据。与传统的关系型数据库不同,MongoDB 采用文档形式来存储数据。这意味着,我们可以将复杂的数据结构存储为一个文档,而不是拆分为多个表。
构建一个完整的应用程序
下面我们来一步步构建一个完整的应用程序,使用 GraphQL 和 MongoDB。
步骤 1:搭建 GraphQL 服务器
首先,我们需要创建一个 GraphQL 服务器,为客户端提供 API。
我们可以使用 Node.js 来创建一个 GraphQL 服务器。首先,安装以下依赖:
npm install express express-graphql graphql
然后,我们来编写代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- -- -- ------- ------ ----- ------ - ------------- ---- ----- - ------ ------ - --- -- -- -------------- ------- -- ----- ---- - - ------ -- -- ------ ------- -- -- -- ------- ---- ----- --- - ---------- -- -- ------- --- ------------------- ------------- ------- ------- ---------- ----- --------- ---- ---- -- ----- ---------------- -- -- ---------------- ------ -- ---------------------------------
这个服务器只有一个查询,用于返回字符串 "Hello world!"。
尝试在浏览器中访问 http://localhost:4000/graphql
,你会看到 GraphQL IDE,可以在左侧查询窗口中输入以下查询:
{ hello }
点击运行按钮,你会看到服务器返回了一个字符串 "Hello world!"。
步骤 2:连接 MongoDB 数据库
接下来,我们需要连接 MongoDB 数据库。我们可以使用 MongoDB 官方提供的 Node.js 驱动程序来连接数据库。
首先,安装 MongoDB 驱动程序:
npm install mongodb
然后,我们来编写代码:
-- -------------------- ---- ------- ----- ----------- - ------------------------------- ----- --- - ---------------------------- ----- ------ - ------------ ------------------------ ------------- ------- - ---------------------- ------------ -- --------- -- --- ------ --- ----- -- - ------------------ -- ---- --------------- ---
我们在本地创建了一个名为 "myproject" 的数据库,并连接上了 MongoDB 服务器。
步骤 3:创建 GraphQL 查询
现在我们已经可以访问 GraphQL API 和 MongoDB 数据库了。我们需要创建一些查询来获取数据。
假设我们正在开发一个博客平台,需要创建以下查询:
- 获取所有文章
- 根据 ID 获取单个文章
- 获取文章的评论
我们可以使用 GraphQL schema 来定义这些查询:
-- -------------------- ---- ------- -- -- ------- ------ ----- ------ - ------------- ---- ------- - --- --- ------ ------- -------- ------- --------- ---------- - ---- ------- - --- --- ------- ------- -------- ------- - ---- ----- - --------- ---------- ----------- ----- ------- ------------------- ----- ---------- - ---
这个 schema 定义了三个类型,Article、Comment 和 Query。Article 和 Comment 分别表示文章和评论数据,Query 则定义了三个查询,用于获取这些数据。
我们需要实现这些查询,可以在上述代码中添加 resolvers:
-- -------------------- ---- ------- ----- ---- - - --------- ----- ------ -------- -- - -- ------ ----- -------- - ----- --------------------------------------------------- -- ------ ------ -------------------- -- -- --- ------------ ------ -------------- -------- ---------------- --------- -- ---- -- -------- ----- -- -- -- -------- -- - -- -- -- ---- ----- ------- - ----- ------------------------------------------- ---- --- ------------ --- -- ---------- - ------ ----- - -- ------ ------ - --- ------------ ------ -------------- -------- ---------------- --------- -- -- -- --------- ----- -- --------- -- -------- -- - -- ------- ----- -------- - ----- ---------------------------------------- ---------- --- ------------------- ------------- -- ------ ------ -------------------- -- -- --- ------------ ------- --------------- -------- --------------- ---- - --
步骤 4:使用 GraphQL 查询数据
最后,我们需要使用前面定义的查询来获取数据。
假设我们已经将一些文章和评论存储到了 MongoDB 数据库中。我们可以在 GraphQL IDE 中使用以下查询来获取这些数据:
-- -------------------- ---- ------- - -------- - -- ----- -------- - -- ------ ------- - - ----------- --------------------------- - -- ----- ------- -------- - -- ------ ------- - - ------------------- --------------------------- - -- ------ ------- - -
使用这些查询,我们可以获取所有文章、单个文章的详细信息以及一篇文章的评论。
总结
GraphQL 和 MongoDB 都是非常流行的技术,它们可以共同构建一个完整的应用程序。在本文中,我们学习了如何使用这两个技术来构建一个简单的博客平台,包括创建 GraphQL 服务器、连接 MongoDB 数据库以及定义和实现 GraphQL 查询。这个例子只是一个入门级别的案例,实际上,在实际项目中,我们需要更多的工具和技术来处理数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645e5bd0968c7c53b00bc46c