Как я могу обновить атрибут в Sequelize Promise?

Я пытаюсь проверить электронную почту пользователя, расшифровав токен JWT, указанный в качестве параметра в запросе GET.

Если токен действителен и пользователь еще не подтвержден, я хочу обновить столбец isVerified на true.

Почему мое обещание всегда отклоняется?

const jwt = require('jsonwebtoken');
const request = require('request');
const models = require('../models');


/**
 * GET /verify-email/:token
 */
exports.verifyEmail = function(req, res) {
  jwt.verify(req.params.token, process.env.TOKEN_SECRET, function(err, decoded) {
    if (err) {
      res.send({
        msg: 'Token is invalid or has expired'
      })
    }
    models.User.findOne({
      where: {
        email: decoded.email,
        id: decoded.id
      }
    }).then(record => {
      if (!record) {
        res.send({
          msg: 'User not found'
        })
      } else if (record.isVerified) {
        res.send({
          msg: 'User already verified'
        })
      } else {
        console.log('user mail ' + record.email + ' will be verified in db')
        record.update({
            isVerified: true,
          })
          .then(() => res.status(200).send({
            msg: 'User has been verified'
          }))
          .catch((error) => res.status(400).send(error));
      }
    })
  });
}

1 ответ

Проблема решена, в моей модели был хук beforeValidation:

if (!user.changed('password')) {
    return sequelize.Promise.reject("not modified");
}
Другие вопросы по тегам