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

MongoNotConnectedError报错:Post请求数据未存MongoDB致应用崩溃

问题分析与解决方案

核心错误原因

你的代码在连接MongoDB后立即关闭了数据库连接,导致后续执行user.save()时,MongoDB客户端已处于断开状态,触发MongoNotConnectedError。问题出在db.js的finally块中:

.finally(() => {
  mongoose.connection.close();
});

finally块无论连接成功或失败都会执行,这里直接关闭连接,使得后续所有数据库操作无法正常进行。

修复步骤

1. 修正数据库连接逻辑(db.js)

移除finally块的关闭连接代码,将连接函数改为异步形式,确保连接稳定性:

const mongoose = require('mongoose');

// 简化连接字符串,直接指定目标数据库名
const connectionString = 'mongodb://127.0.0.1:27017/firstDB';

const connectToMongoose = async () => {
  try {
    await mongoose.connect(connectionString, {
      useNewUrlParser: true,
      useUnifiedTopology: true
    });
    console.log('Connected to MongoDB');
  } catch (error) {
    console.error('Failed to connect to MongoDB:', error);
    process.exit(1); // 连接失败时直接退出进程,避免无效服务运行
  }
};

module.exports = connectToMongoose;

2. 确保数据库连接成功后启动服务(index.js)

修改启动逻辑,等待MongoDB连接完成后再启动Express服务,避免请求到来时连接未就绪:

const connectToMongoose = require('./db');
const express = require('express')

const app = express()
const port = 3000

app.use(express.json())
// 注册路由
app.use('/api/auth', require('./routes/auth.js'))
app.use('/api/note', require('./routes/note.js'))

// 连接数据库成功后再启动服务
connectToMongoose().then(() => {
  app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
  });
});

3. 修复路由中的异步操作(auth.js)

当前user.save()是异步操作,未处理错误和响应逻辑,需补充异步处理和错误捕获:

const express = require('express');
const User = require('../models/Users');
const router = express.Router();

// 创建用户的POST请求处理
router.post('/', async (req, res) => {
  try {
    console.log(req.body);
    const user = new User(req.body); // 补充new关键字创建模型实例
    await user.save();
    res.status(201).send('用户创建成功');
  } catch (error) {
    res.status(400).send(`创建失败:${error.message}`);
    console.error(error);
  }
});

module.exports = router;

验证修复

  1. 确保本地MongoDB服务处于运行状态
  2. 重启Express应用
  3. 再次用Thunder Client发送POST请求,数据会正常存入MongoDB Compass,应用不再崩溃

内容的提问来源于stack exchange,提问作者Suman Bal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:32:05