MongoDB
MongoDB 是一款基于 文档存储 的 开源 NoSQL 数据库,由 MongoDB Inc. 开发,广泛用于高性能、可扩展的数据存储场景。它突破了传统关系型数据库(如 MySQL)的表格模型,采用灵活的 JSON 风格文档(BSON) 存储数据,非常适合处理非结构化或半结构化数据(如日志、用户行为数据、实时数据等)。
MongoDB Atlas
MongoDB Atlas 是 MongoDB 官方提供的云数据库服务,提供免费套餐,适合个人开发和测试使用。访问 MongoDB Atlas 官网 注册并登录试用。
- 登录
MongoDB Atlas控制台后,点击Build a Database,按照向导选择免费套餐并完成集群创建。 - 在
Security->Database Access页面,点击ADD NEW DATABASE USER,设置用户名和密码,并赋予合适的权限。 - 在
Security->Network Access页面,点击ADD IP ADDRESS。若在开发环境,可选择ALLOW ACCESS FROM ANYWHERE(生产环境不推荐);若要精确控制,可添加当前 IP 地址或指定的 IP 地址。 - 在集群页面,点击
Connect,选择Connect your application,复制连接字符串,后续会用到。
安装 MongoDB 驱动
在 Express 项目中,我们使用 mongoose 作为 MongoDB 的对象数据建模(ODM)库,它能简化与 MongoDB 的交互。执行以下命令安装 mongoose:
npm install mongoose
在 Express 项目中连接 MongoDB
在项目根目录下创建 src/database 文件夹,并在其中创建 db.js 文件,内容如下:
import mongoose from 'mongoose';
// 定义连接数据库的函数
const connectDB = async () => {
try {
// 替换为从 MongoDB Atlas 复制的连接字符串
const mongoURI = '连接字符串';
// 连接数据库
await mongoose.connect(mongoURI, {
serverSelectionTimeoutMS: 5000,
});
console.log('MongoDB 连接成功');
} catch (error) {
console.error('MongoDB 连接失败:', error);
// 连接失败时退出进程
process.exit(1);
}
};
export default connectDB;
在 Express 应用中调用连接函数
在 src 目录下 app.js 文件,引入 connectDB 函数并调用:
import express from 'express';
import {urlencoded, json, static as staticMiddleware} from "express";
import ejs from 'ejs';
import {fileURLToPath} from 'url';
import {dirname, join} from 'path';
import connectDB from "./database/db.js";
import htmlRouter from './router/html.js';
import userRouter from './router/api/user.js';
const app = express();
const port = 3000;
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
app.set('views', join(__dirname, '/template'));
app.set('view engine', 'html');
app.engine('html', ejs.__express);
app.use(staticMiddleware(join(__dirname, 'public')));
app.use(urlencoded({ extended: true }));
app.use(json());
app.use('/', htmlRouter);
app.use('/user', userRouter);
app.use((err, req, res, next) => {
const statusCode = err.statusCode || 500;
res.status(statusCode).json({
code: '-1',
msg: err.message,
});
})
connectDB();
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
启动项目,控制台会出现MongoDB 连接成功