2017-02-15 10 views
2

Я получаю ошибку bcrypt, указывающую, что необходимы данные и хэш-аргументы, ссылаясь на строку # 44 в файле routes.js. Из того, что я могу сказать, я передаю эту информацию: первым параметром bcrypt.compare является введенный пользователем пароль, а второй - хешированный пароль, извлеченный из 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 Проклятье, я ошибся в своем приложении app.js, отправив неопределенный пароль. Спасибо за помощь. – jmcgui05

ответ

7

bcrypt.compare занимает 3 Params - passwordHash, passwordToCheck, обратный вызов.

Эта ошибка означает, что один из первых двух параметров имеет значение null или undefined.