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

React旧应用更新报错:TypeError: db.Game.deleteMany is not a function

解决 "TypeError: db.Game.deleteMany is not a function" 错误

可能的问题根源

  • Game模型未正确导出:检查./models目录下的模型定义文件,确保Game模型是通过Mongoose的model()方法创建并正确导出的。示例模型文件写法:
    const mongoose = require('mongoose');
    const gameSchema = new mongoose.Schema({
      // 这里填写你的游戏数据字段定义
      title: String,
      genre: String
    });
    module.exports = mongoose.model('Game', gameSchema);
    
    同时确认./models/index.js(模型入口文件)正确汇总导出模型:
    module.exports = {
      Game: require('./Game')
    };
    
  • Mongoose版本兼容问题:升级Mongoose后,旧的模型初始化或导出逻辑可能失效。检查项目依赖的Mongoose版本,若版本跨度大,需对照官方文档调整模型写法。
  • db对象未正确初始化:确认数据库连接已成功建立,且db.Game指向的是有效的Mongoose模型实例,而非undefined或其他无效对象。可以在代码开头添加console.log(db.Game)验证。

转换为async/await的正确实现

以下是改用async/await的种子数据脚本,同时加入了基础的错误校验:

const db = require('./models');
const data = require('./gameData.json');

async function seedDatabase() {
  try {
    // 校验模型有效性
    if (!db.Game || typeof db.Game.deleteMany !== 'function') {
      throw new Error('db.Game 不是有效的Mongoose模型,请检查模型导出逻辑');
    }

    // 删除现有数据
    const deleteResult = await db.Game.deleteMany({});
    console.log(deleteResult.deletedCount, 'games deleted');

    // 批量插入新数据
    const seededGames = await db.Game.create(data.games);
    console.log(seededGames.length, 'games created successfully');
    console.log('done!');
  } catch (err) {
    console.error('种子数据导入失败:', err);
  } finally {
    process.exit();
  }
}

seedDatabase();

额外检查步骤

  • 确保在执行Seed.js前,Mongoose已经成功连接到数据库。部分旧项目可能没有在种子脚本中处理连接逻辑,需补充数据库连接代码或确保连接逻辑在脚本执行前完成。

内容的提问来源于stack exchange,提问作者cass-ette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:26:03