2016-04-02 23 views
0

Veritabanı tablomda bir özellik için değer olarak ayarladığım rasgele oluşturulmuş bir dizim var. Kayıtlarıma başarılı bir güncelleme yaptıktan sonra veritabanı kaydında kullanılan aynı belirteci içeren bir e-posta gönderirim. Ne yazık ki, o zamanki ifademde belirteç parametresi belirteci içermiyor ve bunun yerine 1 değeriyle değiştiriliyor. Bu neden oluyor ve vaatler nasıl çalışır?JavaScript Zincirdeki doğru değeri geçmiyor sözler

This is the token: 78a4543cdd4cfd9d8c7fbad89aed9f902e07c372 
Executing (default): UPDATE `user` SET `reset_password_token`='78a4543cdd4cfd9d8c7fbad89aed9f902e07c372',`reset_password_expires`='2016-04-02 14:46:13',`updatedAt`='2016-04-02 13:46:13' WHERE `email` = '[email protected]' 
Then this token: 1 

POST Metodu:

Bu

benim kodda göründüğü bir örnek konsol günlüğü ve SQL güncelleme

.post(function(req, res){ 
     async.waterfall([ 
     function(done){ 
      crypto.randomBytes(20, function(err, buf){ 
       var resetToken = buf.toString('hex'); 
       done(err, resetToken); 
      }); 
     }, (function(token, done){ 


      console.log('This is the token: ' + token); 


      models.User.update({ 
       resetPasswordToken: token, 
       resetPasswordExpires: Date.now() + 3600000 
      }, { 
      where: { email: req.body.email } 

      }).then(function(token, user, done){ 


      console.log('Then this token: ' + token); 


      var transporter = nodemailer.createTransport(sgTransport(options)); 

      var mailOptions = { 
       from: '"Test Email" <[email protected]', 
       to: '[email protected]', 
       subject: 'Password Rest Confirmation', 
       text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' + 
         'Please click on the following link, or paste this into your browser to complete the process:\n\n' + 
         'http://' + req.headers.host + '/reset/' + token + '\n\n' + 
         'If you did not request this, please ignore this email and your password will remain unchanged.\n' 
      }; 

      transporter.sendMail(mailOptions, function(error, info){ 
       if(error){ 
        return console.log(error); 
       } 
       console.log('Message sent: ' + info.response); 

      }); 
       res.redirect('/'); 
       //res.redirect('/password-reset-confirmation') Make a confirmation page with information or just send a flash message 
      }) 
     })], function(error){ 
     if(error){ 
      console.log(error); 
     } 
    }) 
    }); 

cevap

2

token değerini 1 alır update() çünkü işlem, etkilenen kayıtların sayısını döndürür. Bu durumda, tek bir kayıt güncellendi.

+0

Cevabınız için teşekkürler. Tam olarak aradığım şey buydu – cphill

İlgili konular