”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何将 MongoDB 与 Node.js 连接:综合指南

如何将 MongoDB 与 Node.js 连接:综合指南

发布于2024-07-31
浏览:873

How to Connect MongoDB with Node.js: A Comprehensive Guide

将 MongoDB 与 Node.js 连接起来是现代 Web 开发人员的一项关键技能。在本指南中,我们将逐步引导您完成整个过程,确保您可以轻松集成这些强大的技术。

介绍

MongoDB 是领先的 NoSQL 数据库,以其灵活性和可扩展性而闻名。您可以使用强大的 JavaScript 运行时 Node.js 构建高效且可扩展的 Web 应用程序。让我们深入了解无缝连接的步骤。

目录

  1. 先决条件
  2. 设置 MongoDB
  3. 启动 Node.js 项目
  4. 使用 Mongoose 连接到 MongoDB
  5. 测试连接
  6. 结论

1. 前提条件

  • JavaScript 和 Node.js 的基本了解。
  • Node.js 和 npm (Node Package Manager) 已安装在您的系统上。
  • MongoDB 帐户和本地/远程 MongoDB 服务器。

2. 设置MongoDB

首先在您的计算机上安装 MongoDB 或通过 MongoDB Atlas 设置云实例。保存您的连接字符串,因为您很快就会需要它。

在 MongoDB Atlas 上设置 MongoDB

2.1 注册或登录

  • 前往MongoDB Atlas网站:https://www.mongodb.com/cloud/atlas
  • 如果您是 MongoDB Atlas 的新手,请注册一个新帐户。否则,请使用您的凭据登录。

2.2 创建新集群

  • 登录后,单击“创建新集群”按钮。
  • MongoDB Atlas 提供了一个名为 M0 Sandbox 的免费套餐。对于初学者或小型项目来说,这是一个很好的起点。

2.3 选择云提供商和区域

  • 选择您的首选云提供商(AWS、Google Cloud 或 Azure)。
  • 选择一个区域。某些区域支持免费套餐,因此请务必选择最接近您的主要用户群的区域以减少延迟。

2.4 配置集群设置

  • 虽然默认设置适用于大多数用例,但您可以根据需要修改集群的名称和其他设置。

2.5 添加附加配置(可选)

  • 在其他设置下,您可以配置备份、启用监控或进行其他高级配置。对于大多数初学者来说,默认设置就足够了。

2.6 设置网络访问

  • 单击左侧面板中的“数据库访问”部分。
  • 添加具有用户名和强密码的新用户。请记住这些凭据,因为您需要它们将应用程序连接到 MongoDB。
  • 在“IP白名单”选项卡下,单击“添加IP地址”。为了安全起见,仅将需要访问的IP列入白名单。出于开发目的,您可以选择“允许从任何地方访问”,但出于安全考虑,不建议在生产环境中这样做。

2.7 获取连接字符串

  • 集群启动并运行后,单击“CONNECT”按钮。
  • 选择“连接您的应用程序”。
  • 选择您的驱动程序版本并复制连接字符串。这是您将在应用程序中用于连接到 MongoDB 的字符串。将连接字符串替换为您之前创建的 MongoDB 用户的密码。

2.8 连接您的应用程序

  • 在应用程序中使用复制的连接字符串开始与 MongoDB 云实例交互。

2.9 监控与管理

  • MongoDB Atlas 提供了一个仪表板,您可以在其中监控查询、性能和其他指标。定期检查以确保数据库的运行状况和性能。

3. 启动 Node.js 项目

在终端或命令提示符中:

mkdir mongo-node-connection
cd mongo-node-connection
npm init -y

上面的代码创建了一个新的 Node.js 项目。

4. 使用 Mongoose 连接到 MongoDB

Mongoose 是一个流行的 ODM(对象文档映射器),它促进 Node.js 和 MongoDB 之间的连接。

安装猫鼬:

npm install mongoose

连接到 MongoDB:

const mongoose = require('mongoose');

// Your MongoDB connection string
const dbURI = 'YOUR_MONGODB_CONNECTION_STRING';

mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('Connected to MongoDB'))
  .catch((error) => console.error('Connection error', error));

注意:将 'YOUR_MONGODB_CONNECTION_STRING' 替换为您的实际 MongoDB 连接字符串。

5. 测试连接

验证连接:

  • 使用 Mongoose 创建一个简单的架构和模型。
  • 将文档插入 MongoDB 集合。
  • 获取文档并将其记录到控制台。
const testSchema = new mongoose.Schema({
  name: String,
  testField: String
});

const TestModel = mongoose.model('Test', testSchema);

const testData = new TestModel({
  name: 'Node-Mongo Connection Test',
  testField: 'It works!'
});

testData.save()
  .then(doc => {
    console.log('Test document saved:', doc);
  })
  .catch(error => {
    console.error('Error saving test document:', error);
  });

运行 Node.js 脚本,如果一切设置正确,您应该会在控制台中看到记录的测试文档。

六,结论

将 MongoDB 与 Node.js 连接可以通过提供强大的数据库解决方案来增强您的 Web 应用程序。通过遵循本指南,您已经使用 Mongoose 设置了基础连接,为将来更高级的操作和查询铺平了道路。

版本声明 本文转载于:https://dev.to/suleman_ahmed_rajput/how-to-connect-mongodb-with-nodejs-a-comprehensive-guide-1hga?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    编程 发布于2024-12-21
  • 如何使用 Prototype.js 实现自动调整文本区域大小的功能?
    如何使用 Prototype.js 实现自动调整文本区域大小的功能?
    使用 Prototype 实现自动调整大小的 TextArea要增强内部销售应用程序中的用户体验,请考虑向用于送货地址的文本区域。以下是实现此目的的详细指南:目标是创建一个可以动态调整其高度以适应文本输入的文本区域,确保最佳的空间利用率和可读性。为此,我们将利用 JavaScript 框架 Prot...
    编程 发布于2024-12-21
  • Spring Boot如何配置多个数据源?
    Spring Boot如何配置多个数据源?
    在Spring Boot中配置多个数据源在Spring Boot中,使用多个数据源可以让你隔离不同实体的数据访问管理或应用程序。为了实现这一点,使用了 application.properties 文件和 Bean 配置方法。application.properties要添加第二个数据源,请在 ap...
    编程 发布于2024-12-21
  • 为什么 C++ 中的零长度数组会导致错误 2233,如何修复它?
    为什么 C++ 中的零长度数组会导致错误 2233,如何修复它?
    在 C 中处理“零长度数组” 在 C 中,在遗留代码中可能会遇到“零长度数组”的情况。这涉及包含长度为零的数组的结构。虽然警告被编译指示抑制,但创建包含此类数组的新结构可能会导致错误 2233。为什么会发生这种情况,可以采取什么措施来解决它?使用零长度数组的原因是一个历史原因允许动态分配数组的 C ...
    编程 发布于2024-12-21
  • 如何设置 HTML `` 标签的样式并确保其可见性?
    如何设置 HTML `` 标签的样式并确保其可见性?
    HTML标签的样式和可见性问题声明在HTML中,标签用于定义一个区域可以链接到另一个资源的图像。然而,用户在设计样式并使这些区域始终可见方面遇到了困难。jQuery 插件解决方案克服这一挑战的一种方法是利用 MapHilight jQuery 插件。该插件提供了使用 CSS 悬停效果突出显示图像地图...
    编程 发布于2024-12-21
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-12-21
  • 访问类中的数据库对象时如何避免全局变量?
    访问类中的数据库对象时如何避免全局变量?
    在类中使用全局变量创建分页功能涉及从类中访问数据库对象。但是,尝试访问类内部的外部变量可能会导致错误。让我们深入研究处理此问题的可能解决方案。为了解决致命错误“在非对象上调用成员函数 query()”,数据库对象需要在类中可访问。不使用全局变量,更合适的方法是将数据库对象注入到类或其方法中。依赖注入...
    编程 发布于2024-12-21
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-12-21
  • 如何在C++中生成特定范围内均匀分布的随机数?
    如何在C++中生成特定范围内均匀分布的随机数?
    跨范围均匀随机数生成您寻求一种在指定范围[min, max]内均匀生成随机数的方法。 rand 的缺陷您当前使用 rand() 和模运算符的实现可能无法确保均匀分布,因为它的行为取决于 RAND_MAX 和范围本身。C 11 和统一范围生成在 C 11 中,std::uniform_int_dist...
    编程 发布于2024-12-21
  • 如何在 Jackson 序列化期间抑制空字段值?
    如何在 Jackson 序列化期间抑制空字段值?
    处理 Jackson 序列化中的空字段值Jackson 是一个流行的 Java 序列化库,提供了各种配置选项来定制其序列化行为。一种常见的情况是抑制空字段值的序列化。这可确保序列化输出中仅包含非空属性。配置 Jackson 进行空值抑制指示 Jackson 忽略 null 有两种主要方法序列化期间的...
    编程 发布于2024-12-21
  • JavaScript 如何检测浏览器选项卡活动?
    JavaScript 如何检测浏览器选项卡活动?
    使用 JavaScript 确定浏览器选项卡活动在 Web 开发中,通常需要检测浏览器选项卡是否正在活跃使用。当选项卡位于后台时,此功能可以通过暂停或优化任务来实现高效的资源分配。确定选项卡活动的一种方法是通过页面可见性 API。此 API 提供了一个简单的布尔属性 document.hidden,...
    编程 发布于2024-12-21
  • 插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入数据时如何修复“常规错误:2006 MySQL 服务器已消失”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2024-12-21
  • C++ 中数组长度有哪些限制以及如何克服它们?
    C++ 中数组长度有哪些限制以及如何克服它们?
    研究 C 中的数组长度限制 尽管 C 数组具有巨大的实用性,但对其大小施加了一定的限制。这些限制的程度取决于几个因素,即编译器、系统硬件,甚至数组的数据类型。可变长度强制与普遍看法相反, C 并没有严格执行数组长度的绝对限制。相反,它依赖编译器和系统规范来确定最大大小。这种灵活性允许根据硬件功能进行...
    编程 发布于2024-12-21
  • HTML 格式标签
    HTML 格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2024-12-21
  • 我们如何有效地将 AST 编译回可读的源代码?
    我们如何有效地将 AST 编译回可读的源代码?
    将 AST 编译回源代码将抽象语法树 (AST) 编译回源代码,通常称为“漂亮打印” ,”对于在 AST 转换后生成人类可读的代码至关重要。有两种主要方法需要考虑:保持原始代码格式或生成美观的代码。一种方法涉及向 AST 中的每个节点添加 ->compile 方法。但是,这种方法限制了生成的输出中的...
    编程 发布于2024-12-21

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3