✅ 目录结构示例
project/
├── config/
│ └── db.config.js # 数据库配置
├── models/
│ └── user.model.js # 用户模型
├── services/
│ └── user.service.js # 用户服务层
├── db/
│ └── mongoose.js # 数据库连接模块
├── index.js # 项目入口
📁 1. config/db.config.js
—— 配置文件
module.exports = {
host: 'localhost',
port: 27017,
dbName: 'modularDemo',
options: {
useNewUrlParser: true,
useUnifiedTopology: true
}
}
📁 2. db/mongoose.js
—— 连接数据库模块
const mongoose = require('mongoose')
const config = require('../config/db.config')
const uri = `mongodb://${config.host}:${config.port}/${config.dbName}`
const connectDB = async () => {
try {
await mongoose.connect(uri, config.options)
console.log('✅ MongoDB connected successfully')
} catch (error) {
console.error('❌ MongoDB connection failed:', error)
process.exit(1)
}
}
module.exports = connectDB
📁 3. models/user.model.js
—— 用户模型
const mongoose = require('mongoose')
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, min: 0 },
email: { type: String, unique: true, required: true },
isActive: { type: Boolean, default: true }
})
module.exports = mongoose.model('User', userSchema)
📁 4. services/user.service.js
—— 用户服务操作
const User = require('../models/user.model')
const createUser = async (data) => await User.create(data)
const getAllUsers = async () => await User.find()
const findUserByEmail = async (email) => await User.findOne({ email })
const updateUser = async (id, data) =>
await User.findByIdAndUpdate(id, data, { new: true })
const deleteUser = async (id) => await User.findByIdAndDelete(id)
module.exports = {
createUser,
getAllUsers,
findUserByEmail,
updateUser,
deleteUser
}
📁 5. index.js
—— 启动项目、测试服务
const connectDB = require('./db/mongoose')
const userService = require('./services/user.service')
const run = async () => {
await connectDB()
const newUser = await userService.createUser({
name: 'Tom',
age: 25,
email: 'tom@example.com'
})
console.log('🆕 Created user:', newUser)
const users = await userService.getAllUsers()
console.log('👥 All users:', users)
}
run()
📝 说明
- 所有配置集中在
config/db.config.js
- 连接逻辑独立在
db/mongoose.js
- 模型和服务模块分离,便于维护
- 可方便接入 Express、Koa 等后端框架