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

ExpressJS+MongoDB项目中mongoose.Schema构造函数报错求助

问题排查与解决

错误根源

你遇到的TypeError: mongoose.Schema is not a constructor/function,核心原因是你引入的../database模块没有正确导出mongoose核心对象,导致调用mongoose.Schema时找不到对应的构造函数。另外你的模型导出代码也存在冗余错误。

修复步骤

1. 检查并修正database.js文件

确保../database文件正确导出mongoose对象,而不是仅执行连接操作。示例代码如下:

const mongoose = require('mongoose');

// 替换为你的MongoDB连接字符串
mongoose.connect('mongodb://localhost:27017/your-database-name')
  .then(() => console.log('MongoDB连接成功'))
  .catch(err => console.error('MongoDB连接失败:', err));

// 必须导出mongoose对象
module.exports = mongoose;

2. 修正userModel.js代码

移除冗余的模型创建逻辑,直接导出正确的模型:

const mongoose = require("../database");

// 创建用户Schema
const userSchema = new mongoose.Schema({
  name: String,
  password: String,
  email: String
});

// 创建并导出模型(第一个参数是集合名称的单数形式,Mongoose会自动映射为复数集合)
const User = mongoose.model('User', userSchema);
module.exports = User;

额外说明

  • 原代码最后一行mongoose.model("Users", userModel)是错误用法:model方法的第二个参数应该是Schema对象,而非已创建的模型实例,这属于冗余且错误的操作。
  • 确保你的项目中已经正确安装mongoose依赖:npm install mongoose

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:48:20