Javascript 类型';密码';在使用ExpressBodyParser进行解析后,of form返回undefined

Javascript 类型';密码';在使用ExpressBodyParser进行解析后,of form返回undefined,javascript,html,node.js,express,Javascript,Html,Node.js,Express,我是nodejs的初学者,我正在我的nodejs应用程序中进行表单验证。但是在使用express bodyparser后,表单中输入的密码返回为未定义的类型,因此我无法验证注册密码。如何解决此问题以及为什么会发生这种情况 app.js const express = require('express'); const expressLayouts = require('express-ejs-layouts'); const mongoose = require('mongoose'); co

我是nodejs的初学者,我正在我的nodejs应用程序中进行表单验证。但是在使用express bodyparser后,表单中输入的密码返回为未定义的类型,因此我无法验证注册密码。如何解决此问题以及为什么会发生这种情况

app.js

const express = require('express');
const expressLayouts = require('express-ejs-layouts'); 
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();

//DB config
require('dotenv').config(); //for setting environment variables on server
const uri = process.env.ATLAS_URI;
mongoose.connect(uri,{useNewUrlParser:true ,useUnifiedTopology: true})
    .then(() => console.log("mongodb connected"))
    .catch(err => console.log(err));


//EJS
app.use(expressLayouts);
app.set('view engine','ejs');

//Express Bodyparser
app.use(express.urlencoded({extended:true}));

//Routes
app.use('/',require('./routes/index'));
app.use('/users',require('./routes/users'));

const PORT = process.env.PORT || 5000;

app.listen(PORT,console.log(`Server started on port ${PORT}`));


<div class="row mt-5">
    <div class="col-md-6 m-auto">
      <div class="card card-body">
        <h1 class="text-center mb-3">
          <i class="fas fa-user-plus"></i> Register
        </h1>

        <form action="/users/register" method="POST">
          <div class="form-group">
            <label for="name">Name</label>
            <input
              type="name"
              id="name"
              name="name"
              class="form-control"
              placeholder="Enter Name"
              value="<%= typeof name != 'undefined' ? name : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="email">Email</label>
            <input
              type="email"
              id="email"
              name="email"
              class="form-control"
              placeholder="Enter Email"
              value="<%= typeof email != 'undefined' ? email : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="password">Password</label>
            <input
              type="password"
              id="password"
              name="password"
              class="form-control"
              placeholder="Create Password"
              value="<%= typeof password != 'undefined' ? password : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="password2">Confirm Password</label>
            <input
              type="password"
              id="password2"
              name="password2"
              class="form-control"
              placeholder="Confirm Password"
              value="<%= typeof password2 != 'undefined' ? password2 : '' %>"
            />
          </div>
          <button type="submit" class="btn btn-primary btn-block">
            Register
          </button>
        </form>
        <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
      </div>
    </div>
  </div>
const express = require('express');
const router = express.Router();

//Login page
router.get('/login',(req,res)=>res.render('Login'));

//Register
router.get('/register',(req,res)=>res.render('register'));

//Registration Handling
router.post('/register',(req,res) =>{
    const { name, email, password1, password2 } = req.body;
    let errors = [];
    console.log(password1,typeof password1,name,typeof name);
    //Check required fields
    if(!name || !email ||!password1 || !password2){
        errors.push({msg:'Please fill required fields'});
    }

    //check if passwords equal
    if(password1 !== password2){
        errors.push({msg:'Passwords do not match'});
    }

    //check password length
    if(password1.length<6){
        errors.push({msg:'Password should be atleast 6 characters'});
    }

    if(errors.length>0){
        res.render('register',{
            errors,
            name,
            email,
            password1,
            password2
        });
    }else{
        res.send('pass');
    }
});

module.exports = router

查看/注册.ejs

const express = require('express');
const expressLayouts = require('express-ejs-layouts'); 
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();

//DB config
require('dotenv').config(); //for setting environment variables on server
const uri = process.env.ATLAS_URI;
mongoose.connect(uri,{useNewUrlParser:true ,useUnifiedTopology: true})
    .then(() => console.log("mongodb connected"))
    .catch(err => console.log(err));


//EJS
app.use(expressLayouts);
app.set('view engine','ejs');

//Express Bodyparser
app.use(express.urlencoded({extended:true}));

//Routes
app.use('/',require('./routes/index'));
app.use('/users',require('./routes/users'));

const PORT = process.env.PORT || 5000;

app.listen(PORT,console.log(`Server started on port ${PORT}`));


<div class="row mt-5">
    <div class="col-md-6 m-auto">
      <div class="card card-body">
        <h1 class="text-center mb-3">
          <i class="fas fa-user-plus"></i> Register
        </h1>

        <form action="/users/register" method="POST">
          <div class="form-group">
            <label for="name">Name</label>
            <input
              type="name"
              id="name"
              name="name"
              class="form-control"
              placeholder="Enter Name"
              value="<%= typeof name != 'undefined' ? name : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="email">Email</label>
            <input
              type="email"
              id="email"
              name="email"
              class="form-control"
              placeholder="Enter Email"
              value="<%= typeof email != 'undefined' ? email : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="password">Password</label>
            <input
              type="password"
              id="password"
              name="password"
              class="form-control"
              placeholder="Create Password"
              value="<%= typeof password != 'undefined' ? password : '' %>"
            />
          </div>
          <div class="form-group">
            <label for="password2">Confirm Password</label>
            <input
              type="password"
              id="password2"
              name="password2"
              class="form-control"
              placeholder="Confirm Password"
              value="<%= typeof password2 != 'undefined' ? password2 : '' %>"
            />
          </div>
          <button type="submit" class="btn btn-primary btn-block">
            Register
          </button>
        </form>
        <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
      </div>
    </div>
  </div>
const express = require('express');
const router = express.Router();

//Login page
router.get('/login',(req,res)=>res.render('Login'));

//Register
router.get('/register',(req,res)=>res.render('register'));

//Registration Handling
router.post('/register',(req,res) =>{
    const { name, email, password1, password2 } = req.body;
    let errors = [];
    console.log(password1,typeof password1,name,typeof name);
    //Check required fields
    if(!name || !email ||!password1 || !password2){
        errors.push({msg:'Please fill required fields'});
    }

    //check if passwords equal
    if(password1 !== password2){
        errors.push({msg:'Passwords do not match'});
    }

    //check password length
    if(password1.length<6){
        errors.push({msg:'Password should be atleast 6 characters'});
    }

    if(errors.length>0){
        res.render('register',{
            errors,
            name,
            email,
            password1,
            password2
        });
    }else{
        res.send('pass');
    }
});

module.exports = router


表单上的密码输入名为
Password
,但您将其读作
password1
。看起来像是打字错误。谢谢。就是这样。我不知道变量名必须与表单输入相同。