前言
在现代 Web 应用程序中,前端技术的发展非常迅速。为了满足不断增长的需求,我们需要使用更加高效和灵活的技术来构建应用程序。GraphQL 是一种新兴的查询语言,可以使我们更加高效地构建 API。MongoDB 是一种流行的 NoSQL 数据库,可以存储非结构化数据。在本篇文章中,我们将介绍如何在 Express.js 中使用 GraphQL 和 MongoDB 构建一个完整的应用程序。
环境搭建
安装 Node.js
在开始之前,我们需要安装 Node.js。你可以在官方网站(https://nodejs.org/)下载安装程序并按照指示进行安装。
创建 Express.js 应用程序
在我们开始之前,我们需要创建一个新的 Express.js 应用程序。你可以使用以下命令在命令行中创建一个新的 Express.js 应用程序:
$ npm install express-generator -g $ express myapp $ cd myapp $ npm install
这会创建一个名为 myapp
的新 Express.js 应用程序,并安装所需的依赖项。
安装 GraphQL 和 MongoDB
在我们可以开始构建我们的应用程序之前,我们需要安装所需的 GraphQL 和 MongoDB 模块。你可以使用以下命令在命令行中安装这些模块:
$ npm install graphql express-graphql mongoose --save
这会安装 graphql
、express-graphql
和 mongoose
模块,我们将在接下来的步骤中使用它们。
构建 GraphQL API
现在我们已经安装了所需的模块,我们可以开始构建我们的 GraphQL API。
创建模型
在我们可以创建 GraphQL API 之前,我们需要创建一个 MongoDB 模型。在我们的示例中,我们将创建一个名为 Book
的模型,其中包含书籍的标题、作者和出版日期。
我们可以使用以下代码创建我们的模型:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ----------------- ------ ------- ------- ------- --------------- - ----- ----- -------- -------- -- --- -------------- - ---------------------- ------------
创建 GraphQL Schema
现在我们已经创建了我们的 MongoDB 模型,我们可以开始创建我们的 GraphQL Schema。GraphQL Schema 定义了我们可以查询和变更的数据结构。
在我们的示例中,我们将创建一个名为 BookType
的类型,并定义我们可以查询的字段。我们还将创建一个名为 RootQuery
的根查询,它允许我们查询我们的书籍数据。
我们可以使用以下代码创建我们的 GraphQL Schema:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ------------------------- ----- - ------------------ -------------- ---------- ------------ --------------- -------------- - - -------- ----- -------- - --- ------------------- ----- ------- ------- -- -- -- --- - ----- --------- -- ------ - ----- ------------- -- ------- - ----- ------------- -- --------------- - ----- ------------- -- --- --- ----- --------- - --- ------------------- ----- ---------------- ------- - ----- - ----- --------- ----- - --- - ----- --------- - -- --------------- ----- - ------ ----------------------- -- -- ------ - ----- --- ---------------------- --------------- ----- - ------ -------------- -- -- -- --- -------------- - --- --------------- ------ ---------- ---
创建 GraphQL API
现在我们已经创建了我们的 GraphQL Schema,我们可以开始创建我们的 GraphQL API。我们将使用 express-graphql
模块来创建我们的 API。
我们可以使用以下代码创建我们的 GraphQL API:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- -------- - -------------------- ----- --- - ---------- --------------------------------------------------- - ---------------- ----- ------------------- ----- --- -------------------------------- -- -- - ---------------------- -- ----------- --- -------- ----------- ------------- ------- --------- ----- -- -- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
我们首先使用 express
模块创建一个新的 Express.js 应用程序。我们然后使用 mongoose
模块连接到我们的 MongoDB 数据库。最后,我们使用 express-graphql
模块创建我们的 GraphQL API,并将其挂载到 /graphql
路径上。
查询数据
现在我们已经创建了我们的 GraphQL API,我们可以开始查询我们的数据。我们可以使用 GraphQL 的查询语言来查询我们的数据。
查询单个书籍
我们可以使用以下查询语句查询单个书籍:
{ book(id: "5f3b43a3d3f3a51d1c2a2316") { title author published_date } }
这会查询具有 ID 为 5f3b43a3d3f3a51d1c2a2316
的书籍,并返回标题、作者和出版日期。
查询所有书籍
我们可以使用以下查询语句查询所有书籍:
{ books { title author published_date } }
这会查询所有书籍,并返回标题、作者和出版日期。
变更数据
除了查询数据之外,我们还可以使用 GraphQL 的变更语言来变更我们的数据。
创建新书籍
我们可以使用以下变更语句创建新的书籍:
mutation { addBook(title: "Book Title", author: "Book Author", published_date: "2020-08-20") { title author published_date } }
这会创建一个新的书籍,并返回标题、作者和出版日期。
更新书籍
我们可以使用以下变更语句更新现有的书籍:
mutation { updateBook(id: "5f3b43a3d3f3a51d1c2a2316", title: "New Title", author: "New Author", published_date: "2020-08-20") { title author published_date } }
这会更新具有 ID 为 5f3b43a3d3f3a51d1c2a2316
的书籍,并返回更新后的标题、作者和出版日期。
删除书籍
我们可以使用以下变更语句删除现有的书籍:
mutation { removeBook(id: "5f3b43a3d3f3a51d1c2a2316") { title author published_date } }
这会删除具有 ID 为 5f3b43a3d3f3a51d1c2a2316
的书籍,并返回被删除的书籍的标题、作者和出版日期。
结论
在本篇文章中,我们介绍了如何在 Express.js 中使用 GraphQL 和 MongoDB 构建一个完整的应用程序。我们首先创建了一个 MongoDB 模型,然后创建了一个 GraphQL Schema,并使用 express-graphql
模块创建了我们的 GraphQL API。最后,我们演示了如何查询和变更我们的数据。
这个应用程序只是一个起点,你可以根据你的需求进行扩展。GraphQL 和 MongoDB 可以让你更加高效地构建 Web 应用程序,因此这是一个非常有用的技术组合。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67566970d8a608cf5d8baea1