【问题标题】:how to fix this is node"Error: User validation failed: username: Path `username` is required. password: Path `password` is required."如何解决这个是节点“错误:用户验证失败:用户名:需要路径‘用户名’。密码:需要路径‘密码’。”
【发布时间】:2021-10-28 13:39:01
【问题描述】:

我正在创建一个新用户并检查用户电子邮件以前是否存在。如果不是,那么它正在创建一个新用户并保存它。我需要什么来纠正这个验证错误?

我已经尝试过将名称设置为不需要。但是还是不行。

这是我的用户模型。

用户.js

import mongoose from 'mongoose'

const UserSchema = new mongoose.Schema(
    {
      username: {
        type: String,
        required: true,
        unique: true,
      },
      email: {
        type: String,
        required: true,
        unique: true,
      },
      password: {
        type: String,
        required: true,
      },
      profilePic: {
        type: String,
        default: "",
      },
    },
    { timestamps: true }
  );

const User = mongoose.model("User",UserSchema)
export default User

这是我的路由器文件

import User from '../model/User.js'
import express from 'express'

const router = express.Router()

//register
router.post("/register",async (req,res) => {
    try{
        const newUser = new User({
            username:req.body.username,
            password:req.body.password,
            email:req.body.email
        })

        const user =await newUser.save()
        res.status(200).json(user)
    }catch(err){
        res.status(500).json(err)
    }
})

export default router

这是我的 app.js

import express from 'express'
import mongoose from 'mongoose'
import dotenv from 'dotenv'
import UserRoute from './routes/User.js'

const app = express()
dotenv.config()
app.use(express.json())
app.use(express.urlencoded({ extended: true }));

const PORT = process.env.PORT || 3000

mongoose
  .connect(process.env.MONGO_URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(console.log("Connected to MongoDB"))
  .catch((err) => console.log(err));

app.use("/api/auth",UserRoute)

app.listen(PORT , () => console.log(`backend started on ${PORT}` ))

如果我尝试对密码进行加密然后在我的路由中使用它,那么我也会注意到一件事,然后在邮递员中发出请求而不是错误消息后,我在邮递员中得到空对象 {},这是什么原因???

代码有什么问题我尝试了不同的方法来通过从堆栈溢出中引用来解决这个问题,但没有奏效

感谢您的帮助

【问题讨论】:

  • 问题可能出在客户端。您没有收到正文参数。您可以在拨打/register 的位置发布客户端代码吗?
  • 有一次我没有在客户端使用 /register 调用,而只是在邮递员中对其进行测试并在此处发布我的代码:github.com/priyanshu740/BlogApp@LucaPizzini

标签: javascript node.js mongodb express mongoose


【解决方案1】:

您的请求正文是什么样的? 你确定有 req.body.username 和 req.body.passwords 吗? 在保存用户之前尝试 console.log 它们并检查它们是否未定义。

【讨论】:

  • 我尝试了 console.log 并得到了这样的东西 "{ profilePic: '', _id: new ObjectId("617adafb9a72afe72be527bf") }" @Sefi R
  • 那是你的问题。该请求没有用户名、密码和电子邮件。因此,您实际上所做的是将 undefined 分配给它们并尝试保存。您需要将 raw/JSON 添加到邮递员的请求正文中,JSON 应类似于:``` { "username": "username", "password": "password", "email": "username@gmail. com" } ```
  • 啊,那是非常愚蠢的错误。我正在使用原始/文本顺便说一句谢谢你的帮助:)
  • 不客气 :-)
猜你喜欢
  • 2021-10-07
  • 2020-11-26
  • 2022-01-21
  • 1970-01-01
  • 2021-01-17
  • 2018-03-29
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多