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

mongoose中model.save()无执行且无报错,数据导入MongoDB失败求助

解决Mongoose model.save()无执行无报错的问题

我帮你排查了下代码里的问题,主要有这么几个点导致save()既不执行也没报错:

1. 数据库连接与模型不绑定

你用了mongoose.createConnection()创建数据库连接,但你的Product模型是基于mongoose的默认全局连接生成的,两者没有关联——模型根本不知道该用你新建的这个连接去操作数据库,自然不会执行保存逻辑。

解决办法二选一:

  • 改用全局连接:把createConnection换成mongoose.connect(),这样模型会自动绑定到这个全局连接:
    // feed.js 里的连接代码替换成
    mongoose.connect("mongodb://127.0.0.1:27017/shopping")
      .then(() => console.log('数据库连接成功'))
      .catch(err => console.error('连接失败', err));
    
  • 将模型绑定到指定连接:如果一定要用createConnection,需要从连接实例上创建模型:
    // feed.js
    var mongoose = require('mongoose');
    // 创建连接实例
    const dbConnection = mongoose.createConnection("mongodb://127.0.0.1:27017/shopping");
    // 从连接实例加载模型(注意要导入schema而不是现成的model)
    var Product = dbConnection.model('Product', require('../models/product').schema);
    

2. 未等待数据库连接完成就执行save

数据库连接是异步操作,你直接创建Product并调用save()时,可能数据库还没连上,这时候操作会静默失败,不会触发回调也不会报错。

解决办法:等待连接成功后再执行保存

推荐用async/await来处理异步逻辑,代码更清晰:

// feed.js 完整修改示例
var Product = require('../models/product');
var mongoose = require('mongoose');

async function importProducts() {
  try {
    // 等待连接成功
    await mongoose.connect("mongodb://127.0.0.1:27017/shopping");
    console.log('数据库连接成功');

    // 创建产品实例(注意price改成数字类型)
    const product = new Product({
      image: "post1.jpg",
      title: "Lenevo Laptop",
      description: "long description here",
      price: 3500 // 匹配schema里的Number类型
    });

    // 等待保存完成
    await product.save();
    console.log('数据导入成功!');

    // 导入完成后断开连接
    await mongoose.disconnect();
  } catch (err) {
    console.error('导入失败:', err);
    await mongoose.disconnect();
  }
}

// 执行导入函数
importProducts();

3. 字段类型不匹配(潜在问题)

你的Product schema里price定义的是Number类型,但你传了字符串'3500'。虽然Mongoose可能会自动转换字符串为数字,但如果转换失败(比如传了非数字字符串),就会触发验证错误,建议直接传入数字类型,避免不必要的麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:43:35