2017-12-09 9 views
0

私はNodeJsの初心者で、mlabにユーザーの詳細を保存しようとしていますが、パスワードのハッシュは保存できません。ハッシュが計算され、console.logに表示されますが、mlabドキュメントではハッシュではなくプレーンテキストが格納されます。mlabにbcryptを使用してハッシュを保存できませんが、コンソールハッシュが表示されます

var express = require('express'); 
var router = express.Router(); 
var mongojs = require('mongojs'); 
var bcrypt = require('bcrypt'); 

var db = mongojs('mongodb://admin:[email protected]:33776/project', 
['users']); 

router.get('/',function(req,res,next){ 
res.render('register.html'); 
}); 

router.post('/reguser',function(req,res,next){ 
var user = req.body; 
db.users.findOne({uemail: user.uemail},function(err,xuser){ 
    if(xuser){ 
     res.send('User already exists'+JSON.stringify(user)); 
    } 
    else{ 
     bcrypt.hash(user.upassword,8,function(err,hash){ 
      user.upassword = hash; 
      console.log('hash is '+user.upassword); 
     }); 
     db.users.save(user, function(err,user){ 
      if(err){ 
       res.send(err); 
      } else { 
       console.log('Saved-- '+JSON.stringify(user)); 
       res.json(user); 
      } 
     }); 
     } 
    }); 
}); 

答えて

1

これは、ハッシュ関数がasynchronousであるためです。コードの実行は直線に沿っていません。保存関数は、この特定のケースでハッシュが作成される前に実行されます。ハッシュコールバック内で保存を入れ子にした場合は、最初にハッシュを作成して保存します。このよう

bcrypt.hash(user.upassword,8,function(err,hash){ 
    user.upassword = hash; 
    console.log('hash is '+user.upassword); 

    db.users.save(user, function(err,user){ 
     if(err){ 
      res.send(err); 
     } else { 
      console.log('Saved-- '+JSON.stringify(user)); 
      res.json(user); 
     } 
    }); 
}); 
+0

どうもありがとう、あなたのソリューションが正常に働いていました –

関連する問題