提问者:小点点

Req.Body.Email未定义


null

下面是我的代码摘要:


var express = require('express');
var router = express.Router({ mergeParams: true });
var Kids = require('../models/kid');
var User = require('../models/user');
var async = require('async');
var nodemailer = require('nodemailer');
var crypto = require('crypto');
var middleware = require('../middleware');

router.post('/password_reset', function(req, res, next) {
 function(token, done) {
      User.findOne({ email: req.body.email }, function(err, user) {
          console.log(req.body.email);  <====== Returning and undefined
          console.log(user); <====== Returning as null
        if (!user) {
          req.flash('error', 'No account with that email address exists.');
          return res.redirect('/password_reset');
        }

        user.resetPasswordToken = token;
        user.resetPasswordExpires = Date.now() + 3600000; // 1 hour

        user.save(function(err) {
          done(err, token, user);
        });
      });
    }
});

和我的表格

<form action="/password_reset" method="POST" >
  <div class="form-group">
    <label for="exampleInputEmail1">Enter your email address</label>
    <input type="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="Enter email" required>
    
  </div>
  <button type="submit" class="btn btn-warning">Submit</button>
</form>


共1个答案

匿名用户

您有两个问题:

您的/code>没有属性,因此它不是成功的控件。

如果您希望中包含数据,那么您需要说

与此相关的是,您说的是/code>,但说的是属性需要与它标记的元素的匹配。那么需要匹配标记当前元素的元素的ID……而当您有真正的/code>时,就不需要了。

请参阅的文档:

包含在请求正文中提交的数据的键值对。默认情况下,它是未定义的,当您使用主体解析中间件(如express.json()或express.urlencoded())时,它将被填充。

您还没有使用任何体解析中间件。

null

router.use(express.urlencoded())