2017-02-15 5 views
2

私のroutes.jsファイルの#44行目を参照して、データとハッシュ引数が必要であることを示すbcryptエラーが発生しました。私が知ることから、私はその情報を渡しています.bcrypt.compareの最初のパラメーターはユーザーが入力したパスワードで、2番目のパラメーターはdbから取得したハッシュ・パスワードです。私は間違って何をしていますか?bcryptエラー:データとハッシュ引数が必要です

bcrypt.compare(req.params.password, user.password, function... 

routes.js

'use strict' 

var express = require('express'); 
var router = express.Router(); 
var User = require('../app/models/user'); 
//password hashing 
var bcrypt = require('bcrypt'); 

var count = 0; 

router.use(function(req, res, next) { 
    count++; 
    console.log('API hit count = %s', count); 
    next(); 
}); 

// /users post(create new user) get(specific user) 
router.route('/users') 
    .post(function(req,res) { 
     var user = new User(); 
     user.username = req.body.username; 
     user.password = bcrypt.hashSync(req.body.password, 10); 

     //save the user and checkfor errors 
     user.save(function(err) { 
      if (err) { 
       res.send(err); 
      } else { 
       res.json({message: "User created!"}); 
      }  
     }); 

    }) 

router.route('/users/:username') 
    .get(function(req, res) { 
     var query = { 
      username: req.params.username, 
     }; 
     User.findOne(query, function(err, user) { 
      if (err) { 
       res.send(err); 
      } else { 
       bcrypt.compare(req.params.password, user.password, function(err, res) { 
        if(err) { 
         console.log('Comparison error: ', err); 
        } 
       }) 
       res.json(user); 
      } 
     }); 
    }) 
+0

'bcrypt.compare'が呼び出される直前にブレークポイントを設定し、' req.params.password'と 'user.password'が何であるかを見てください。 – bejado

+1

@bejado Dammit、私はapp.jsに間違いがあり、未定義のパスワードを送りました。助けてくれてありがとう。 – jmcgui05

答えて

7

bcrypt.compare 3つのparams取る - passwordHash、passwordToCheck、コールバックを。

このエラーは、最初の2つのパラメータの1つがnullまたは未定義であることを意味します。

関連する問題