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

Mongoose抛出MissingSchemaError:User模型Schema未注册问题问询

报错原因

核心错误出在User.js的模型注册逻辑:mongoose.model()方法要求第一个参数为模型名称的字符串,第二个参数传入提前定义好的Schema对象。你当前代码把模型名和Schema变量名都写进了同一个字符串参数里,导致Mongoose尝试寻找名为User, userSchema的已注册模型,自然触发Schema未注册的报错。

修复步骤
  • 修正User.js的模型导出语句,将错误写法:
    module.exports = mongoose.model('User, userSchema')
    
    替换为正确的参数传递形式:
    module.exports = mongoose.model('User', userSchema)
    
  • 补全auth.js路由的处理逻辑,你当前仅创建了User实例,没有执行保存和响应返回,接口调用时会出现挂起问题,修正后参考代码:
    const router = require('express').Router();
    const User = require('../model/User')
    
    router.post('/register', async (req, res) => {
        const user = new User({
            name: req.body.name,
            email: req.body.email,
            password: req.body.password,
        });
        try {
            const savedUser = await user.save();
            res.status(201).send({ userId: savedUser._id });
        } catch (err) {
            res.status(400).send(err);
        }
    });
    
    module.exports = router;
    
  • (可选优化)调整index.js中的数据库连接逻辑,增加错误捕获,避免连接失败无任何提示:
    // 替换原有的mongoose.connect写法
    mongoose.connect(process.env.DB_CONNECT)
      .then(() => console.log('connected to db!'))
      .catch(err => console.error('Database connection failed:', err));
    
排查校验

修改完成后确认文件路径匹配:auth.js中../model/User的引入路径,要和你实际存放User.js的目录结构一致,路径错误也会触发同类模型加载报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:15:34