在 Express.js 中连接 MongoDB 数据库并进行操作通常需要使用第三方库,其中最流行的是 mongoose
。mongoose
是一个 MongoDB 对象模型工具,它提供了直观的、基于模式的操作,让开发者更容易与 MongoDB 数据库进行交互。以下是连接 MongoDB 数据库并在 Express.js 中使用 mongoose
的详细讲解:
1. 安装 mongoose
:
首先,你需要通过 npm 安装 mongoose
:
npm install mongoose
2. 连接 MongoDB 数据库:
在 Express.js 应用中,你可以使用 mongoose
来连接到 MongoDB 数据库。在你的 Express 应用中,你可以创建一个单独的模块来处理数据库连接。以下是一个例子:
// db.js
const mongoose = require('mongoose');
const connectDB = async () => {
try {
await mongoose.connect('mongodb://localhost:27017/your-database-name', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB Connected');
} catch (error) {
console.error('Error connecting to MongoDB:', error);
}
};
module.exports = connectDB;
然后在你的 Express 应用中引入并调用 connectDB
函数:
// app.js
const express = require('express');
const connectDB = require('./db');
const app = express();
const port = 3000;
// 连接到 MongoDB 数据库
connectDB();
app.get('/', (req, res) => {
res.send('Hello, Express with MongoDB!');
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
3. 定义模型和创建文档:
mongoose
允许你定义模型来映射数据库中的集合。以下是一个例子,展示了如何在 Express.js 中定义模型、创建文档并保存到数据库:
// models/User.js
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
email: String,
});
const User = mongoose.model('User', userSchema);
module.exports = User;
在你的 Express 应用中引入这个模型并使用它:
// app.js
const express = require('express');
const connectDB = require('./db');
const User = require('./models/User');
const app = express();
const port = 3000;
// 连接到 MongoDB 数据库
connectDB();
app.get('/create-user', async (req, res) => {
// 创建一个用户文档
const newUser = new User({
name: 'John Doe',
email: 'john@example.com',
});
try {
// 保存到数据库
const savedUser = await newUser.save();
res.json(savedUser);
} catch (error) {
res.status(500).json({ error: 'Error creating user' });
}
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
4. 查询数据:
可以使用 mongoose
提供的 API 来查询数据库中的数据。以下是一个例子,展示了如何在 Express.js 中查询用户数据:
// app.js
const express = require('express');
const connectDB = require('./db');
const User = require('./models/User');
const app = express();
const port = 3000;
// 连接到 MongoDB 数据库
connectDB();
app.get('/get-users', async (req, res) => {
try {
// 查询所有用户
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: 'Error fetching users' });
}
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
这只是 mongoose
的一些基础用法。还有更高级的操作,比如数据验证、中间件、聚合管道等。mongoose
的官方文档是学习更多内容的好资源:Mongoose 官方文档。