🎉 Sealos 首充折扣,限时返场!最高立返 10000,活动日期 4月22日-4月28日
Sealos Logo

Node.js

在 Sealos DevBox 中使用 Node.js 连接 MongoDB 数据库的详细指南

本文将详细介绍如何在 Sealos DevBox 项目中使用 Node.js 连接和操作 MongoDB 数据库。

准备工作

在开始之前,请确保:

安装依赖包

在 Cursor 终端中执行以下命令安装所需的依赖包:

npm install mongodb dotenv

这将安装以下两个包:

  • mongodb:MongoDB 官方提供的 Node.js 驱动程序
  • dotenv:用于从 .env 文件加载环境变量的轻量级模块

配置数据库连接

配置环境变量

首先,在项目根目录创建 .env 文件,用于存储数据库连接信息:

.env
MONGO_URI=mongodb://your_username:your_password@your_database_host:27017/your_database_name?authSource=admin

请将上述配置中的占位符替换为您从 Sealos 数据库应用获取的实际 MongoDB 连接信息。

创建数据库连接文件

接下来,创建 db.js 文件来处理数据库连接:

db.js
const { MongoClient } = require('mongodb');
require('dotenv').config();
 
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri);
 
async function connectToDatabase() {
  try {
    await client.connect();
    console.log('Connected to MongoDB');
    return client.db();
  } catch (error) {
    console.error('Error connecting to MongoDB:', error);
    process.exit(1);
  }
}
 
module.exports = { connectToDatabase, client };

此文件创建了 MongoDB 客户端实例并导出数据库连接函数。

实现数据库操作

创建 dbOperations.js 文件,实现基本的数据库操作功能:

dbOperations.js
const { connectToDatabase, client } = require('./db');
 
async function createDocument(collection, document) {
  const db = await connectToDatabase();
  const result = await db.collection(collection).insertOne(document);
  console.log(`Document inserted with _id: ${result.insertedId}`);
  return result.insertedId;
}
 
async function readDocuments(collection, query = {}) {
  const db = await connectToDatabase();
  const documents = await db.collection(collection).find(query).toArray();
  console.log('Documents found:', documents);
  return documents;
}
 
async function updateDocument(collection, filter, update) {
  const db = await connectToDatabase();
  const result = await db.collection(collection).updateOne(filter, { $set: update });
  console.log(`${result.modifiedCount} document(s) updated`);
  return result.modifiedCount;
}
 
async function deleteDocument(collection, filter) {
  const db = await connectToDatabase();
  const result = await db.collection(collection).deleteOne(filter);
  console.log(`${result.deletedCount} document(s) deleted`);
  return result.deletedCount;
}
 
module.exports = {
  createDocument,
  readDocuments,
  updateDocument,
  deleteDocument
};

编写示例代码

最后,创建 main.js 文件来演示各项数据库操作:

main.js
const {
  createDocument,
  readDocuments,
  updateDocument,
  deleteDocument
} = require('./dbOperations');
const { client } = require('./db');
 
async function main() {
  try {
    // Create a document
    const newEmployeeId = await createDocument('employees', { name: 'John Doe', position: 'Developer' });
    
    // Read all documents
    await readDocuments('employees');
    
    // Update a document
    await updateDocument('employees', { _id: newEmployeeId }, { position: 'Senior Developer' });
    
    // Read the updated document
    await readDocuments('employees', { _id: newEmployeeId });
    
    // Delete the document
    await deleteDocument('employees', { _id: newEmployeeId });
    
    // Confirm deletion
    await readDocuments('employees');
    
  } catch (error) {
    console.error('An error occurred:', error);
  } finally {
    await client.close();
  }
}
 
main();

运行程序

在 Cursor 终端中执行以下命令运行示例代码:

node main.js

这将执行 main.js 中定义的一系列数据库操作,包括文档的创建、读取、更新和删除。

最佳实践

  1. 始终使用环境变量管理数据库连接信息,避免硬编码
  2. 利用 MongoDB 驱动程序提供的连接池机制提升性能
  3. 使用 try-catch 语句妥善处理可能出现的错误
  4. 及时关闭不再使用的数据库连接
  5. 为常用查询字段创建索引以提高查询效率

常见问题排查

如果遇到连接问题,请检查以下几点:

  1. 确认 .env 文件中的 MongoDB 连接信息是否正确
  2. 验证 MongoDB 数据库服务是否正常运行且可访问
  3. 检查网络配置是否存在访问限制
  4. 确保正确安装了 mongodb 依赖包

更多关于 Node.js MongoDB 驱动程序的详细信息,请参考 MongoDB Node.js 驱动官方文档

在 GitHub 上编辑

最后更新于

本页导航