javascript - 如何更新 Sequelize Promise 中的属性?

标签 javascript node.js promise sequelize.js email-verification

我正在尝试通过解码作为 GET 请求中的参数给出的 JWT token 来验证用户电子邮件。

如果 token 有效且用户尚未验证,我想将 isVerified 列更新为 true。

为什么我的 Promise 总是被拒绝?

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));
      }
    })
  });
}

最佳答案

问题解决了,我的模型中有一个 beforeValidation 钩子(Hook):

if (!user.changed('password')) {
    return sequelize.Promise.reject("not modified");
}

关于javascript - 如何更新 Sequelize Promise 中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47058555/

相关文章:

javascript - Firebase-Function - 计划函数不断抛出错误 "UNAUTHENTICATED"

javascript - 在JS中使用正则表达式和粘性标志匹配多行字符串

node.js - 带有生成器和 Q 的最简单的 fs.readFile 示例?

javascript - 如何在 firebase 数据库中的所有消息子级中将 "read"更新为 true

node.js - 如何使用 jwt token 获取用户 ID

javascript - 在解决之前等待 Promise.all 中的 promise 完成

javascript - 稍后捕获 Promise 拒绝

javascript - async-await 只与 promises 一起使用吗?

javascript - window.print() javascript 在 chrome 中无法预览

javascript - 本地主机不存在 Access-Control-Allow-Origin