You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何将MongoDB数据库连接传递到各路由模块

实现方案

步骤1:抽离数据库连接逻辑到独立文件

新建db/connect.js文件,写入如下内容,将原有的连接逻辑迁移到该文件,最后导出mongoose实例:

const mongoose = require('mongoose');

// 数据库连接
mongoose.connect("mongodb://localhost:27017/codingWaifus", {
  useNewUrlParser: true,
  useUnifiedTopology: true // 新版本Mongoose建议添加该配置避免警告
}, function(err, db){
  if(err){
    console.log(err);
  }
  else{
    console.log("Connected to "+mongoose.connection.name+" on Port: "+mongoose.connection.port);
  }
});
mongoose.connection.on('error', console.error.bind(console, 'MongoDB connection error:'));

module.exports = mongoose;

步骤2:在入口文件初始化连接

在入口文件index.js中引入该连接文件完成初始化,建议将服务启动逻辑放在连接成功的回调中,避免未完成连接时收到请求报错:

const express = require('express');
const app = express();
// 引入连接文件,执行后自动初始化数据库连接
const mongoose = require('./db/connect');

// 其他中间件、路由注册逻辑写在这里
// app.use(xxx)
// app.use('/api/xxx', 路由模块)

// 连接成功后启动服务
mongoose.connection.once('open', () => {
  app.listen(3000, () => {
    console.log('服务已启动在端口3000');
  });
});

步骤3:路由文件中复用连接

任意路由文件中直接引入之前导出的mongoose实例即可使用,无需重复调用连接逻辑:

const express = require('express');
const router = express.Router();
// 引入全局mongoose实例,已经完成连接初始化
const mongoose = require('../db/connect');

// 示例:定义业务Schema和数据模型
const WaifuSchema = new mongoose.Schema({
  name: String,
  skill: String
});
const WaifuModel = mongoose.model('Waifu', WaifuSchema);

// 示例查询接口
router.get('/waifus', async (req, res) => {
  const data = await WaifuModel.find();
  res.json({ code: 200, data });
});

module.exports = router;

注意:Mongoose默认维护单例连接,只要全局成功调用过一次mongoose.connect,所有位置引入的mongoose实例都会复用同一个数据库连接,无需手动传递连接对象。

内容的提问来源于stack exchange,提问作者Gigi Carti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:24:04