2014-01-09 4 views
3

Я создал файл библиотеки узлов с именем encrypt.js.Ошибка обратного вызова при использовании bcrypt-node

В том, что некоторые функции, созданные с помощью Bcrypt-nodejs

var bcrypt = require('bcrypt-nodejs'); 

exports.cryptPassword = function(password, callback) { 
    bcrypt.genSalt(10, function(err, salt) { 
     if (err) return callback(err); 
     else { 
      bcrypt.hash(password, salt, function(err, hash) { 
       return callback(err, hash); 
      }); 
     } 
    }); 
}; 

exports.comparePassword = function(password, userPassword, callback) { 
    bcrypt.compare(password, userPassword, function(err, isPasswordMatch) { 
     if (err) return callback(err); 
     else return callback(null, isPasswordMatch); 
    }); 
}; 

Когда я теперь использовать cryptPassword из моего server.js файла он показывает ошибку, поступающего из bcrypt-nodejs библиотеки с указанием «no callback function was given»

я добавил функция в пределах моего звонка ниже

var encryptedPassword = encrypt.cryptPassword(req.body.user.password, function (err, salt){ 
    if(err) {throw err}; 
    console.log('hlllll'); 
}); 

Может ли кто-нибудь помочь?

ответ

13

Синтаксис: bcrypt.hash(data, salt, progress, cb)

Вы должны иметь два обратных вызовов.

Документ здесь:

https://npmjs.org/package/bcrypt-nodejs


Обновление:

Вы можете использовать пакет bcrypt вместо bcrypt-nodejs

и ваш код будет работать:

bcrypt.hash(password, salt, function(err, hash) { 
    return callback(err, hash); 
}); 
+0

Глупо, что в нем говорится, что все аргументы * кроме * 'progress' требуются, так как это, очевидно, также требуется. – robertklep

+0

@robetklep Ах да, я пытаюсь, я думаю, когда есть только один обратный вызов, этот обратный вызов должен быть «обратным вызовом результата», а не «обратным вызовом» процесса – damphat

+0

Да, я согласен. К сожалению, код не учитывает это. – robertklep

1

Вы можете использовать bcyrpt-nodejs если то, что вы хотите, но вы должны изменить следующий раздел bCrypt.js

if(!callback) { 
    throw "No callback function was given." 
} 

и заменить его

if(typeof callback == 'undefined') { 
    callback = progress; 
    progress = null; 
} 

затем в коде , просто имейте это;

require('bcrypt').hash(values.password,null,null,function passwordEncrypted(err,password){ 
0

использовать bcyrpt.compareSync вместо bcypt.compare. Он не требует обратного вызова

Смежные вопросы