使用 express 密码验证失败

Password Validation fails using express

我在尝试注册新用户时遇到错误 ValidationError: Path password is required。我是 Node、编程和身份验证的新手。

这是我的用户模型和架构代码,我试图对其进行彻底的评论。

用户路由器

router.post("/register", async (req, res) => { try { let {email, password, passwordCheck, displayName} = req.body;

    // validate email, password and passwordCheck
    if (!email || !password || !passwordCheck)
        return res.status(400).json({ msg: "Not all fields have been entered." });
    if (password.length < 5)
        return res.status(400).json({ msg: "The password needs to be at least 5 characters long." });
    if (password !== passwordCheck)
        return res.status(400).json({ msg: "Passwords do not match. Enter the same password twice for verification." });


   //verify if the new user already exists in the MongoDB
    const existingUser = await User.findOne({ email: email });
    if (existingUser)
        return res.status(400).json({ msg: "An account with this email already exists." });

    if (!displayName) displayName = email; //if no display name, email is display name

    const salt = await bcrypt.genSalt(10); //creates random string used for hashing password
    const passwordHash = await bcrypt.hash(password, salt, function (err, hash) {
        if (err) {
            console.log('Issue with hashing bcrypt');
        }// else {console.log('Successful Hash: ' + hash);} add if error checking
    });
    //save new user to DB with hashed password
    const newUser = new User({
        email,
        "password":passwordHash,
        displayName,
    });
    console.log(newUser);
    const savedUser = await newUser.save(); //save the new user to database
    res.json(savedUser); //respond to front end with saved user

} catch (err) {
    console.log('Error registering user');
    res.status(500).json({ err });} });

用户模型

const userSchema = new mongoose.Schema({
email: {type: String, required: true, unique: true},
password: {type: String, required: true, minlength: 5},
displayName: {type: String} });

您是否尝试过 password: passwordHash 而不是 "password": passwordHash。 如果它没有帮助,那么你应该 console.log 你的 passwordHash 来检查它是否有值。