简体   繁体   中英

Can't validate user input by using Express-validator

I attached the Registration form and Validation code (Node.js) as shown below. I have tried out to validate user input which comes from the registration form, but it hasn't worked out! But it was successfully stored on the MongoDB database.

<form  action="/register" method="POST">
  <input type="text" name="name" placeholder="username"><br>
  <input type="password" name="userpass" placeholder="password"><br>
  <input type="submit" name="submit" value="send">
</form>

router.post('/register', function(req, res, next) {
// Get user input from register form
let nam = req.body.name;
let pass = req.body.userpass;

req.checkBody('nam', 'Name is required').notEmpty();
req.checkBody('pass', 'Pass is required').notEmpty();

var errors = req.validationErrors();
if(errors){
   console.log(errors)
}
else {
   var newUser = new User({
     username:nam,
     pass:pass
   });
   User.createUser(newUser,function(err,user){
          if(err) throw err;
          console.log(user);
   });
   res.location('/register');
   res.redirect('/register');
}

I got this result when I run the code.

GET /register 304 25.699 ms - -
[ { param: 'nam', msg: 'Name is required', value: undefined },
{ param: 'pass', msg: 'Pass is required', value: undefined } ]

The code below should work, I think the main issue is to use the actual form variable names (name, userpass):

index.js

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const expressValidator = require('express-validator');

app.use(express.static('./'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressValidator());

var router = express.Router();
app.use("/", router);

router.post('/register', function(req, res, next) {
    console.log('/register POST body: ', req.body);

    /* Check form variables. */
    req.checkBody('name', 'Name is required').notEmpty();
    req.checkBody('userpass', 'Pass is required').notEmpty();

    var errors = req.validationErrors();
    if (errors) {
        console.error("Validation errors occurred: ", errors);
        res.status(400).json({ status: "Bad Request" });
        return;
    }

    console.log("Validation successful");

    // Get user input from register form
    let nam = req.body.name;
    let pass = req.body.userpass;

    var newUser = new User({
        username:nam,
        pass:pass
    });
    User.createUser(newUser,function(err,user){
            if(err) throw err;
            console.log(user);
    });
    res.location('/register');
    res.redirect('/register');
});

app.listen(3000);

index.html

<!doctype html>
<html lang="en">
    <body>
    <form  action="/register" method="POST">
        <input type="text" name="name" placeholder="username"><br>
        <input type="password" name="userpass" placeholder="password"><br>
        <input type="submit" name="submit" value="send">
    </form>
    </body>
</html>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM