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

使用Mongoose连接MongoDB时遇MissingSchemaError:未注册User模型

问题:Mongoose报错MissingSchemaError: Schema hasn't been registered for model "User"

运行Mongoose连接MongoDB并使用User模型时,出现如下错误:

MissingSchemaError: Schema hasn't been registered for model "User"

用户提供的代码:

const mongoose = require('mongoose')


const Schem = mongoose.Schema


mongoose.Promise = global.Promise


const md5 = require('md5')


const validator = require('validator')


const mongodbErrorHandler = require('mongoose-mongodb-erros')


const passportalocalMongoose = require ('passport-local-mongoose')

const userSchema = new Schema ({
username: {
    type:string,
    unique: true
},
password:{
    type:string

},

module.exports = mongoose.model('User', userSchema)

})

错误原因分析

  • 变量名拼写错误:将mongoose.Schema赋值给了Schem(少了一个字母a),后续创建userSchema时调用的new Schema未定义,导致Schema无法正确实例化。
  • 类型定义错误:字段类型使用了小写的string,Mongoose要求使用大写的String(JavaScript内置构造函数)。
  • 代码结构错误:module.exports语句被错误包裹在userSchema的定义括号内部,导致模型还未完成创建就执行导出,同时破坏了Schema定义的语法结构。
  • 语法冗余错误:password字段定义末尾多了一个逗号,会引发JavaScript语法解析错误。

解决方法及修正后的代码

修正上述所有问题后,代码如下:

const mongoose = require('mongoose')
// 修正变量名拼写
const Schema = mongoose.Schema

mongoose.Promise = global.Promise

const md5 = require('md5')
const validator = require('validator')
const mongodbErrorHandler = require('mongoose-mongodb-errors')
const passportLocalMongoose = require('passport-local-mongoose')

// 修正类型为大写String,移除多余逗号
const userSchema = new Schema({
  username: {
    type: String,
    unique: true
  },
  password: {
    type: String
  }
})

// 挂载passport-local-mongoose(若需使用其认证功能则保留)
userSchema.plugin(passportLocalMongoose)
// 挂载mongodb错误处理插件
userSchema.plugin(mongodbErrorHandler)

// 将导出语句移到Schema定义外部
module.exports = mongoose.model('User', userSchema)

额外说明:

  • 若不需要md5、validator等依赖,可根据实际需求移除。
  • 使用passport-local-mongoose时,插件会自动处理用户名密码的存储与验证逻辑,甚至可以不用手动定义username和password字段,具体可根据业务需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:37:11