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

如何修复Mongoose+Passport注册时Path `password` is required报错

问题原因

passport-local-mongoose 插件会自动为用户模型添加username、hash、salt字段和对应的身份验证方法,不会使用你手动在Schema中定义的password字段。你给password字段加了required: true的必填校验,但注册流程中该字段始终不会被赋值,因此触发了校验错误。

解决方法
  • 第一步:删除UserSchema中手动定义的password字段,无需手动声明密码相关字段,插件会自动处理加密存储逻辑,修改后的Schema如下:
const UserSchema = new mongoose.Schema({
  // 如有其他自定义字段,比如邮箱、昵称可以在这里添加,不需要保留password字段
})
  • 第二步(可选优化):如果需要对密码做长度、格式校验,不要在Schema层面添加,在注册接口接收参数时做前置校验即可,示例如下:
app.post("/register", (req,res) =>{
  // 前置参数校验
  if(!req.body.password || req.body.password.length < 6) {
    console.log("密码长度不能少于6位")
    return res.redirect("/register")
  }
 User.register({username:req.body.Username},req.body.password, function(err, user){
   if (err) {
    console.log(err)
    res.redirect("/register")
   }
   else{
     passport.authenticate("local")(req,res, function(){
       res.redirect("/index")
     })
   }
 })
})
  • 第三步:检查前端注册表单的密码输入框name属性是否为password,确保参数可以正常传递到后端。

修改完成后清空数据库中已有的用户集合,重启服务再测试注册功能即可。

内容的提问来源于stack exchange,提问作者Nache Masho Ado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:03