Nodejs,bcrypt,Mongoose

时间:2017-06-20 14:13:58

标签: node.js mongodb mongoose bcrypt

我对Nodejs / Mongo(使用Mongoose)非常陌生。我使用bcrypt模块来对HTML表单中的密码进行哈希处理。在我的db.create函数中,我无法将变量storehash存储在mongodb中。

我没有收到任何错误,但它在数据库中只是空白。我已经越过检查代码的每一行,它似乎正在工作。我不明白为什么我无法将变量存储为"密码:storehash"而我可以存储类似密码:' test' "

我确定我在某个地方犯了一些菜鸟错误。我很感激任何帮助!



var db = require('../models/users.js');
var bcrypt = require('bcryptjs');


module.exports.createuser = function(req,res){

	var pass = req.body.password;
	var storehash;

	//passsord hashing
	bcrypt.genSalt(10, function(err,salt){
		if (err){ 
			return console.log('error in hashing the password');
		} 
		bcrypt.hash(pass, salt, function(err,hash){
			if (err){
				return console.log('error in hashing #2');
			} else {

				console.log('hash of the password is ' + hash);
				console.log(pass);
				storehash = hash; 
				console.log(storehash);
			}
		});

	}); 

db.create({

   email: req.body.email,
   username: req.body.username,
   password: storehash,


}, function(err, User){
	if (err){ 
		console.log('error in creating user with authentication');
	} else {
		console.log('user created with authentication');
		console.log(User);
	}
}); //db.create


};// createuser function




1 个答案:

答案 0 :(得分:1)

db.create应该在console.log(storehash);下面,而不是bcrypt.salt之后。

当您将其放在bcrypt.salt之后时,您所做的就是:当您为密码生成盐然后对盐渍密码进行哈希处理时,您还要使用{存储数据库中的内容{1}}。它们同时执行,而不是顺序执行。这就是为什么,当您重新扫描密码时,您还创建了一个db.create 没有密码的用户

换句话说,它应该是:

db.create