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

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

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

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]删除
最新教程 更多>
  • 在Windows上运行Python脚本时,如何隐藏控制台窗口?
    在Windows上运行Python脚本时,如何隐藏控制台窗口?
    在python 在Python中编写IRC机器人时会出现这样的方案,在该机器人的功能中应在没有可见的控制器的情况下运行。为此,您可以使用以下简单但有效的技术:解决方案,您可以通过使用一个用一个脚本保存python脚本来抑制控制台窗口“ .pyw”扩展。示例此模式打开控制台窗口,允许访问程序的输出和...
    编程 发布于2025-02-06
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式界面中实现垂直滚动元素的CSS高度限制 考虑一个布局,其中我们具有与可滚动的映射div一起移动的subollable map div用户的垂直滚动,同时保持其与固定侧边栏的对齐方式。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 可以限制地图的滚动,我们可以利用CSS...
    编程 发布于2025-02-06
  • 为什么我的JSON输出中的键顺序与使用'json.dumps”的Python字典中的顺序不同?
    为什么我的JSON输出中的键顺序与使用'json.dumps”的Python字典中的顺序不同?
    [2 。但是,您注意到每个字典中的键顺序尚未预期。具体来说,您需要按键以“ id”,“ name”和“ timezone”的顺序出现。您可以使用“ sort_keys” parameter of of “ json.dumps”对输出JSON中的键进行分类。例如:导入JSON contuct.app...
    编程 发布于2025-02-06
  • 如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    [2使用内置的char_length()function。 char_length()和length() 此查询将从指定的表中检索所有行,并基于上升顺序对它们进行排序指定列的字符长度。带有更长字符串的行将出现在结果的底部。
    编程 发布于2025-02-06
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    使用(1)而不是(;;)会导致无限循环的性能差异? 现代编译器,(1)和(;;)之间没有性能差异。 是如何实现这些循环的技术分析在编译器中: perl: S-> 7 8 unstack v-> 4 -e语法ok 在GCC中,两者都循环到相同的汇编代码中,如下所示:。 globl t_时 t_时...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python 导入编解码器 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有表情符号 emoji_pattern = re.compile(“ [”...
    编程 发布于2025-02-06
  • 在映射到MySQL枚举列时,如何确保冬眠保留值?
    在映射到MySQL枚举列时,如何确保冬眠保留值?
    在hibernate中保存枚举值:故障排除错误的列type ,他们各自的映射至关重要。在Java中使用枚举类型时,至关重要的是,建立冬眠的方式如何映射到基础数据库。在您的情况下,您已将MySQL列定义为枚举,并在Java中创建了相应的枚举代码。但是,您遇到以下错误:“ MyApp中的错误列类型。...
    编程 发布于2025-02-06
  • 如何使用代理身份验证创建GO HTTP客户端?
    如何使用代理身份验证创建GO HTTP客户端?
    在使用Authentication 时,使用authentication时要求。当将代理支持集成到现有的第三方代码中时,这可能会构成挑战。在这种情况下,另一种方法是使用所需的代理配置创建自定义的HTTP客户端。然后,可以在第三方软件包中使用此客户端来代替默认的HTTP客户端。以下是如何使用http...
    编程 发布于2025-02-06
  • 如何使用Python的记录模块实现自定义处理?
    如何使用Python的记录模块实现自定义处理?
    使用Python的Loggging Module 确保正确处理和登录对于疑虑和维护的稳定性至关重要Python应用程序。尽管手动捕获和记录异常是一种可行的方法,但它可能乏味且容易出错。解决此问题,Python允许您覆盖默认的异常处理机制,并将其重定向为登录模块。这提供了一种方便而系统的方法来捕获和...
    编程 发布于2025-02-06
  • 如何在没有404个错误的情况下使用泽西2.0提供静态资源(例如index.html)?
    如何在没有404个错误的情况下使用泽西2.0提供静态资源(例如index.html)?
    在泽西岛估算静态资源的404错误映射拦截所有传入的请求,没有留出空间的网络容器来提供静态内容。为了解决此问题,我们深入探究了过滤器的领域,尤其是com.sun.jersey.spi.container.servlet.servlet.servlet.servletcontainer for Jer...
    编程 发布于2025-02-06
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    在这里工作/},false); 不幸的是,答案是否。除非在Creation中存储对处理程序的引用。要解决此问题,请考虑将事件处理程序存储在中心位置,例如页面的主要对象,请考虑将事件处理程序存储在中心位置,否则无法清理匿名事件处理程序。 。这允许在需要时轻松迭代和清洁处理程序。
    编程 发布于2025-02-06
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样?使用openssl?答案:可以使用mcrypt数据加密数据,可以使用openssl。关于如何使用openssl对McRypt进行加密的数据: openssl_decrypt...
    编程 发布于2025-02-06
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。可以将fd.append("fileToUpload[]", files[x]);方法用于此目的,允许您在单个请求中发送多个文件。 初始尝试 在JavaScript中,一种常见方法是:); 但是,此代码仅处理第一...
    编程 发布于2025-02-06
  • 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...
    编程 发布于2025-02-06

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

Copyright© 2022 湘ICP备2022001581号-3