使用 Node.js 和 MongoDB 构建一个简单的 CRUD 应用程序

阅读时长 8 分钟读完

前言

Node.js 是一个强大的 JavaScript 运行时环境,广泛应用于 Web 服务器、命令行工具等领域。而 MongoDB 是一个流行的 NoSQL 数据库,经常被用于处理海量数据。本文将介绍如何使用 Node.js 和 MongoDB 构建一个简单的 CRUD 应用程序。

环境准备

在开始之前,我们需要确保已经安装好了 Node.js 和 MongoDB。可以从官网下载安装包进行安装。此外,我们还需要安装一些 Node.js 的依赖库,例如 Express、Mongoose 等。

可以使用 npm 包管理器来安装这些依赖库,比如:

  • express:Web 应用框架
  • mongoose:MongoDB 的对象模型工具
  • body-parser:HTTP 请求体解析器
  • nodemon:开发环境热重载工具,方便开发调试

创建项目

接下来创建一个空目录,并在其中初始化一个新的 Node.js 项目:

命令行中的 -y 表示自动应答所有的问题,使用默认值初始化。

接着,我们在项目根目录下创建一个 index.js 文件,用于编写服务器端代码。

编写代码

index.js 文件中,我们首先要引入一些必要的模块:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- ---------- - -----------------------

----- --- - ----------
----- ---- - -----

-- --------
----- ----- - --------------------------------

其中,express 是 Web 应用框架,在我们的应用中用来处理 HTTP 请求和路由。mongoose 是 MongoDB 的 JavaScript 对象模型工具,提供了对 MongoDB 数据库的操作方法。body-parser 则是一个中间件,用于解析 HTTP 请求体。app 表示我们的应用实例,port 表示服务器监听端口,dbUrl 表示 MongoDB 数据库的连接字符串。

接下来,我们需要把 app 作为参数传递给一些中间件:

这里我们使用了两个中间件,urlencoded 用来处理 HTTP 请求体中的 urlencoded 格式数据,json 用来处理 JSON 格式数据。extended: true 选项表示使用查询字符串库 qs 的 querystring 解析器。

然后,我们开始连接 MongoDB 数据库,并在连接成功后监听服务器端口:

-- -------------------- ---- -------
-- -----
----------------------- ----------------- ----- ------------------- ------
  -------- -- -
    ---------------------- -- -----------
    -- ----
    ---------------- -- -- -
      ------------------- -- --------- -- ---- ----------
    --
  --
  -------------- -- -
    -------------------
  ---

这里使用了 mongoose.connect 方法来连接 MongoDB 数据库。useNewUrlParseruseUnifiedTopology 则是为了保持向前兼容性,不加也没问题。当连接成功后,我们将在命令行输出 Connected to database,并开始监听服务器端口 port

接着,我们可以在 index.js 中定义一些路由。例如,我们想要创建一个 /books 的路由,用于处理图书的增、删、改、查请求。我们可以这样写:

-- -------------------- ---- -------
-- -- ---- --
----- ---------- - --- -----------------
  ------ -------
  ------- -------
  ------ -------
  ------ -------
---

----- ---- - ---------------------- ------------

-- ---- ----
----- ------ - -----------------
-------------------- ----- ---- -- -
  ----------------- ------ -- -
    -- ------- -
      ----------------------------
    - ---- -
      ----------------
    -
  ---
---
--------------------- ----- ---- -- -
  ----- ---- - --- ---------------
  ----------------- -- -
    -- ------- -
      ----------------------------
    - ---- -
      ---------------
    -
  ---
---
------------------------ ----- ---- -- -
  ----- ------ - --------------
  --------------------- ------- ----- -- -
    -- ------- -
      ----------------------------
    - ---- -
      ---------------
    -
  ---
---
------------------------ ----- ---- -- -
  ----- ------ - --------------
  ------------------------------ --------- ----- ------ ------- ----- -- -
    -- ------- -
      ----------------------------
    - ---- -
      ---------------
    -
  ---
---
--------------------------- ----- ---- -- -
  ----- ------ - --------------
  ------------------------------ ------- -- -
    -- ------- -
      ----------------------------
    - ---- -
      ------------------ ----- -----------
    -
  ---
---

-- ----
--------------- --------

这里定义了一个 Book 模型,并在其基础上创建了一些路由。我们通过 HTTP 请求处理 GET /booksPOST /booksGET /books/:idPUT /books/:idDELETE /books/:id 五个 API 请求。它们分别对应着查询所有的图书、创建新的图书、查询指定 ID 的图书、修改指定 ID 的图书、删除指定 ID 的图书这五个操作。

值得注意的是,API 请求的路径需要以 /api 为前缀,如 /api/books

启动项目

index.js 中编写好路由后,我们就可以启动应用程序了。可以使用启动脚本来启动应用程序:

-- -------------------- ---- -------
-
  ------- ------------
  ---------- --------
  ------- -----------
  ---------- -
    -------- -------- ---------
  --
  --------------- -
    -------------- ----------
    ---------- ----------
    ----------- ---------
  -
-

在命令行中执行 npm start 即可启动应用程序。如果一切顺利,应用程序将在 http://localhost:3000/api/books 监听端口,并在 MongoDB 中保存图书信息。

总结

本文介绍了如何使用 Node.js 和 MongoDB 构建一个简单的 CRUD 应用程序,实现了图书的增、删、改、查功能。在实现过程中,我们使用了 Express Web 应用框架、Mongoose 对象模型工具等关键模块,并对其进行了详细的解读。相信通过本文的学习,读者能够更深入的了解和掌握 Node.js 和 MongoDB 的相关知识,能够构建自己的 Web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cc00895ad90b6d0423bc05

纠错
反馈