0

Ich versuche, eine Benutzer-E-Mail zu validieren, indem ich ein JWT-Token entschlüssle, das als Parameter in einer GET-Anfrage angegeben ist.Wie kann ich das Attribut in Sequelize Promise aktualisieren?

Falls das Token gültig ist und der Benutzer noch nicht verifiziert ist, möchte ich die isVerified-Spalte auf true aktualisieren.

Warum wird mein Versprechen immer abgelehnt?

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

Antwort

0

Problem gelöst, ich hatte einen beforeValidation Haken in meinem Modell:

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