Node.js+Express+Mongoose 连接 MongoDB 入门教程

简介

这篇文章将会介绍如何使用 Node.js,Express 和 Mongoose 连接 MongoDB 数据库并开始使用它。 MongoDB 是一个流行的 NoSQL 数据库,它非常适合存储大量的文档型数据,同时也易于扩展和部署。Mongoose 是一个 Node.js 框架,它可以用于连接 MongoDB 数据库。

准备工作

在开始本教程之前,你需要做好以下准备:

  • 安装 Node.js
  • 安装 MongoDB 数据库,可以参考官方文档直接下载和安装。

创建项目

  1. 使用命令行或终端进入到你想要创建项目的目录中。

  2. 运行下面的命令,创建一个名为 node-mongodb-tutorial 的项目。

----- ---------------------
-- ---------------------
  1. 使用下面的命令来初始化一个 Node.js 项目,并回答命令窗口中的设置问题。
--- ----
  1. 在项目根目录下创建一个 app.js 文件,并输入以下代码:
----- ------- - -------------------
----- -------- - --------------------
----- --- - ----------
----- ---- - -----

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

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

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

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

以上代码会引入 expressmongoose 两个模块,创建一个 Express 应用程序实例,并在 3000 端口运行该应用程序。在这里,我们使用 mongoose.connect() 连接到我们本地的 MongoDB 数据库,并且在连接成功后,输出 MongoDB Connected 字符串到控制台中。

  1. 使用下面的命令,在你的终端或命令行窗口中启动应用程序:
---- ------
  1. 打开浏览器,在地址栏中输入 http://localhost:3000/,你应该能够看到一个输出 Server is running on port 3000 的页面。这表示你已经成功地连接到了 MongoDB 数据库。

定义模型

在 Mongoose 中,文档是通过一个称为 Schema 的对象定义的,该对象定义了文档的结构和默认值。在这里,我们将定义一个名为 User 的模型,并指定 nameemail 作为用户的字段。

app.js 文件中,添加以下代码:

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

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

以上代码定义了一个名为 userSchemaSchema 对象,该对象具有两个属性:nameemail。我们使用 mongoose.model() 方法创建了一个名为 User 的模型,并将 userSchema 分配给它。现在,这个 User 模型可以用来创建、读取、更新和删除文档。

操作文档

创建文档

在下面的代码中,我们将在名为 create-user 的路由中添加一个 Create 操作,该操作使用 User.create() 方法来创建一个新的用户文档。

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

在上述代码中,我们首先从请求体中获取 nameemail 字段的值,并使用 User.create() 方法来创建一个新的用户文档。如果出现错误,我们返回一个 500 错误码和错误消息,否则我们将文档返回给客户端,并输出 User created successfully 到控制台中。

读取文档

在下面的代码中,我们将在名为 get-users 的路由中添加一个 Read 操作,该操作使用 User.find() 方法来获取所有用户文档。

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

在上述代码中,我们使用 User.find() 方法来获取所有用户文档,并将文档返回给客户端。如果出现错误,我们返回一个 500 错误码和错误消息,否则我们将文档返回给客户端,并输出 Users retrieved successfully 到控制台中。

更新文档

在下面的代码中,我们将在名为 update-user/:id 的路由中添加一个 Update 操作,该操作使用 User.updateOne() 方法来更新指定的用户文档。

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

在上述代码中,我们使用 User.updateOne() 方法来更新指定的用户文档。我们首先从请求参数中获取文档的 ID,并从请求体中获取要更新的字段的值。然后,我们使用 $set 操作符来指定要更新的字段,将其传递到 User.updateOne() 方法中。如果出现错误,我们返回一个 500 错误码和错误消息,否则我们将更新后的文档返回给客户端,并输出 User updated successfully 到控制台中。

删除文档

在下面的代码中,我们将在名为 delete-user/:id 的路由中添加一个 Delete 操作,该操作使用 User.deleteOne() 方法来删除指定的用户文档。

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

在上述代码中,我们使用 User.deleteOne() 方法来删除指定的用户文档。我们从请求参数中获取文档的 ID,并将其传递到 User.deleteOne() 方法中。如果出现错误,我们返回一个 500 错误码和错误消息,否则我们将删除后的文档返回给客户端,并输出 User deleted successfully 到控制台中。

总结

本教程介绍了如何使用 Node.js、Express 和 Mongoose 连接并操作 MongoDB 数据库。我们首先定义了一个名为 User 的模型,然后介绍了如何创建、读取、更新和删除文档。现在,你可以开始构建你自己的 Node.js 应用程序,并使用 MongoDB 数据库来存储数据。优秀的 Node.js 开发者需要熟练掌握这个工具链,在实际的项目中,有很多其他的需求,相信你在接下来的探索中会有更深入的发现。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/664dcadfd3423812e4da15b3


猜你喜欢

  • 如何使用 Enzyme 对 React 应用进行性能测试

    随着前端技术的发展,越来越多的网站和 App 采用了 React 作为其前端框架。而对于 React 应用的性能测试是每个前端开发者不可缺少的一部分。本文将介绍如何使用 Enzyme 对 React ...

    5 个月前
  • Vue.js 中 computed 和 watch 的用法及差异分析

    Vue.js 是一款非常流行且易于使用的前端框架。computed 和 watch 是 Vue.js 中两个非常重要的计算属性和观察属性。本文将详细介绍 computed 和 watch 的用法和区别...

    5 个月前
  • 使用 Custom Elements 时出现的问题及解决方案

    什么是 Custom Elements? Custom Elements 是 Web Components API 的一部分,能够定义自定义的 HTML 标签,使得页面开发中的现有元素和组件可以更加模...

    5 个月前
  • 如何使用 RxJS 实现单位测试中的异步代码测试

    在前端开发中,异步代码测试一直是一个难点。而 RxJS 可以为我们提供了解决异步代码测试的一种新思路。本文将介绍如何使用 RxJS 实现单位测试中的异步代码测试。 RxJS 简介 RxJS 是一个基于...

    5 个月前
  • 使用 Node.js 实现 JWT 身份验证的最佳实践

    随着前后端分离的趋势愈加明显,Web 应用的安全性也更加重要。JWT (JSON Web Token)是一种基于 JSON 的开放标准,用于在不同的应用程序之间安全地传递信息。

    5 个月前
  • 使用 Mocha 测试 WebSocket 实时通信

    WebSocket 是一种基于 TCP 协议的轻量级协议,它可以在浏览器与服务器之间建立一个双向连接,实现实时通信。在前端开发中,我们经常需要使用 WebSocket 来实现实时通信,而如何测试 We...

    5 个月前
  • Sequelize 操作数据库的深入和全面学习笔记

    前言 Sequelize 是一个基于 Node.js 的 ORM 框架,可用于操作 MySQL、PostgreSQL、SQLite 等关系型数据库。它提供了一种方便的方式来进行数据库操作,以及实现数据...

    5 个月前
  • Mongoose 中的 findOne() 方法详解

    在使用 Node.js 进行后端开发时,Mongoose 是一个非常流行的 MongoDB 驱动程序,它提供了方便的数据建模、查询和更新功能。在 Mongoose 中,findOne() 方法是查询单...

    5 个月前
  • PM2 如何在服务器上配置自启动

    在前端开发中,我们常常需要在服务器上部署应用程序,这时候一个好的进程管理工具可以帮助我们简化操作流程、提高效率。PM2 就是一个功能强大的进程管理工具,它可以帮助我们监控应用程序的运行情况,自动重启应...

    5 个月前
  • Next.js 使用 fetch 请求出现 CORS 问题怎么解决?

    CORS (Cross-Origin Resource Sharing) 是一种浏览器安全策略,用于防止跨域请求。当在 Next.js 中使用 fetch 请求时,如果请求的地址与当前页面不在同一个域...

    5 个月前
  • Sass 和 Less 的对比优缺点与应用场景

    在前端开发中,CSS 是不可或缺的一部分,然而复杂的样式代码反而容易给开发带来麻烦。Sass 和 Less 是两种基于 CSS 的预处理器,它们可以帮助开发者更便捷地书写和维护 CSS 代码。

    5 个月前
  • 用 Bootstrap 实现响应式布局的实战教程

    Bootstrap 是一款流行的前端框架,它能够帮助开发者快速构建响应式布局的网页。响应式布局是一种设计模式,能够使网页在不同的设备和屏幕大小下自适应地显示。 本文将介绍如何使用 Bootstrap ...

    5 个月前
  • Kafka Streams 应用程序的性能优化

    Kafka Streams 是 Apache Kafka 生态系统中的一部分,它是一种轻量级的流处理框架,它提供了一种简单而强大的方式来处理大规模的流数据。尽管 Kafka Streams 非常方便易...

    5 个月前
  • GraphQL、React 和 Apollo 初学者指南

    GraphQL 是一种新兴的数据查询语言,它在前端开发中越来越受到重视。与传统的 RESTful API 相比,GraphQL 具有更好的可扩展性和可维护性,同时还能够减少网络请求数量。

    5 个月前
  • 在 React Native 中集成 Google 地图,并且运用到项目实例

    随着移动互联网的发展,地图功能在应用中越来越重要,作为一名前端开发者,我们也需要掌握在移动端应用中集成地图的技能。本文将介绍如何在 React Native 中集成 Google 地图,并运用到项目实...

    5 个月前
  • Mocha 测试中 chai 库的 expect 方法的高级用法

    Mocha 是一款流行的 JavaScript 测试框架,而 Chai 则是其中一款可扩展的断言库。在 Mocha 测试中,Chai 的 Expect 方法是非常常用的一种断言方式。

    5 个月前
  • CSS Grid 布局:如何使用 grid-template 属性设定行和列的规则

    在网页设计中,布局是一个非常重要的部分。CSS Grid 布局是近年来出现的一种布局方式,它提供了一种全新的 web 页面布局方法,能够有效地实现多列等分、自适应或固定列大小、按行缩放等布局效果。

    5 个月前
  • RxJS 中的 multicast 和 refCount 操作符的比较及使用方法

    前言 在使用 RxJS 进行前端开发时,有时需要通过操作符来控制数据流的行为。其中,multicast 和 refCount 操作符是常用于多播操作的两个操作符。 multicast 操作符可以将 O...

    5 个月前
  • 在 Hapi 应用程序中如何使用 Winston 日志框架

    作为一名前端开发者,我们常常需要在我们的应用程序中添加日志记录功能,以便在代码运行过程中捕获错误信息和跟踪事件。Winston 是一个流行的 JavaScript 日志框架,它提供了非常强大的日志功能...

    5 个月前
  • GraphQL 优化:利用 Batching 减少网络资源浪费

    前言 GraphQL是一个由Facebook开发的数据查询和操作语言,它可以让客户端决定数据的结构和内容,而不是由服务端决定返回哪些数据。GraphQL的使用已经在很多项目中得到了推广和应用,然而,在...

    5 个月前

相关推荐

    暂无文章