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

MongoDB调用.save()无报错却未保存记录,求排查问题

问题诊断与解决

嘿,我一眼就发现核心问题了——你的业务代码里完全没有建立MongoDB的连接!Mongoose的所有数据库操作都得等连接成功后才会执行,没连接的话,这些操作只会被挂在队列里,根本不会触发你写的回调函数,这就是为啥你既看不到报错,也看不到成功提示的原因。

下面给你一步步的修复方案:

1. 补上数据库连接逻辑

在业务代码最开头加上Mongoose的连接代码,把下面的连接字符串换成你自己的(本地默认是mongodb://localhost:27017/你的数据库名):

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/your-database-name', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => console.log('MongoDB 连接成功啦'))
.catch(err => console.error('MongoDB 连接失败:', err));

2. 顺便优化下代码细节

  • 你的Schema里声明了_id: Schema.Types.ObjectId,其实Mongoose默认会自动生成ObjectId类型的_id,这个声明完全可以省略,不影响功能。
  • 注意模块引入路径:你写的require('/models/myModel')是绝对路径,除非你的models目录在系统根目录,否则建议用相对路径比如./models/myModel(假设你的业务代码在项目根目录)。

3. 修复后的完整业务代码示例

我把代码改成了更易读的async/await风格,比回调函数更清晰:

const mongoose = require('mongoose');
const myModel = require('./models/myModel');

// 先确保连接上数据库,再执行保存操作
mongoose.connect('mongodb://localhost:27017/your-database-name', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(async () => {
  console.log('MongoDB 连接成功');
  
  const myRec = new myModel({ foo: "whatever", bar: "whatever" });
  try {
    const savedDoc = await myRec.save();
    console.log("保存成功:", savedDoc);
  } catch (err) {
    console.log("出错啦:", err);
  }
  
  // 如果是一次性脚本,保存完可以关闭连接
  mongoose.disconnect();
})
.catch(err => console.error('连接数据库时出错:', err));

按照这个改完,你应该就能看到成功提示,数据库里也能查到记录啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:37:34