this err ValidationError: email: путь `email` обязателен. Node.js - PullRequest
0 голосов
/ 25 января 2020

Я сейчас программирую с Node.js и пытаюсь проложить маршрут сброса пароля. Но когда я пытаюсь в Почтальоне, я получаю сообщение об ошибке в моем терминале:

this err ValidationError: email: Path `email` is required.

Я уверен, что ошибка в этом методе:

function(token, done) {
  User.findOne({ email: req.body.email },
    function(err, user) {
    if (!user) {
      return res.status(404).json({
        error: "User not found"
      });
    }
    console.log('step 1')
    user.resetPasswordtoken = token;
    user.resetPasswordExpires = Date.now() + 3600000; // 1 hour
    console.log('step 2')
    user.save(function(err) {          
      done(err, token, user);
    });
  });
}

Чтобы быть более точным, я уверен, что это находится в части.

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

Вот моя схема пользователя

const userSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    email: { 
        type: String, 
        required: true, 
        unique: true, 
        match: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
    },
    firstname: {
        type: String,
        required: true
    },
    lastname: {
        type: String,
        required: true
    },
    password: {
         type: String, 
         required: true 
        },
    resetPasswordtoken: { 
        type: String, 
        required: false
    },
    resetPasswordExpires: { 
        type: Date,
        required: false
        }
});

Спасибо за вашу помощь.

Вот начало метода

router.post('/forgot', (req, res, next) => {
  User.find({ email: req.body.email })
  .exec()
  .then(user => {
    async.waterfall([
      function(done) {
        crypto.randomBytes(20, function(err, buf) {
          var token = buf.toString('hex');
          done(err, token);
        });
      },
      function(token, done) {
        //User.findOne({ email: req.body.email },
          //function(err, user) {
        if (!user) {
          return res.status(404).json({
            error: "User not found"
            });
          }
          //}
          console.log('step 1a')
          console.log(req.body.email)
          user.resetPasswordtoken = token;
          user.resetPasswordExpires = Date.now() + 3600000; // 1 hour
          console.log('step 2b')
          user.save(function(err) {          
            done(err, token, user);
          });
...