我正在尝试使用JavaScript-MD5插件散列用户名,然后将其存储到数据库以与Jdenticon一起使用。我可以使用var hash = md5($scope.username);
对密码进行哈希并将其记录到控制台,但无法将其传递给我的newUser变量。
注册控制器
$scope.register = function(){
var hash = md5($scope.username);
console.log(hash);
var newUser = {
email: $scope.email,
password: $scope.password,
username: $scope.username,
userHash: hash
};
$http.post('/users/register', newUser).then(function(){
$scope.email = '';
$scope.password = '';
$scope.username = '';
userHash = '';
};
注册路线:
app.post('/users/register', function(req, res) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(req.body.password, salt, function(err, hash) {
var user = new User({
email: req.body.email,
password: hash,
username: req.body.username,
userHash: req.body.userHash
});
console.log(user);
user.save(function(err) {
if (err) return res.send(err);
return res.send();
});
});
});
});
答案 0 :(得分:1)
我猜您的userHash
模型中可能遗漏了User
属性,这就是您无法在数据库中存储userHash
的原因。
因此,您应该先在userHash
模型中加入User
,然后才能正常工作。
像:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var UserSchema= new Schema({
username : {
type: String,
required: true
},
email: {
type: String
},
password: {
type: String
},
userHash:{
type: String
}
});
mongoose.model('User', UserSchema);