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
相关产品推荐
相关产品推荐

