Sar*_*hal 10 javascript mongodb node.js
我正在尝试使用post请求将用户保存到mongodb数据库,如下所示,但我收到错误bcrypt错误:需要数据和哈希参数.这是一个非常简单的代码设置但我无法弄清楚它有什么问题.车型/ users.js
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const confic = require('../models/users');
// User schema
const UserSchema = mongoose.Schema({
name: {
type: String,
},
email: {
type: String,
required: true
},
username:{
type: String,
required: true
},
password: {
type: String,
required: true
}
});
const User = module.exports = mongoose.model('User', UserSchema);
module.exports.getUserById = function(id,callback){
User.findById(id,callback);
}
module.exports.getUserByUsername = function(username,callback){
const query = {username:username}
User.findOne(query,callback);
}
module.exports.addUser= function (newUser, callback) {
bcrypt.genSalt(10,(err,salt) => {
bcrypt.hash(newUser.password, salt , (err, hash) =>{
if(err) throw (err);
newUser.password=hash;
newUser.save(callback);
});
});
}
Run Code Online (Sandbox Code Playgroud)
const jwt = require('jsonwebtoken');
User = require('../models/users')
// // Register
router.post('/register', (req, res, next) => {
var newUser = new User({
name: req.body.name,
email: req.body.email,
username: req.body.username,
password: req.body.password
});
User.addUser(newUser, (err, User) => {
if(err){
// res.json({success: false, msg:'Failed to register user'});
} else {
// res.json({success: true, msg:'User registered'});
}
});
});
// Authenticate
router.post('/authenticate', (req, res, next) => {
res.send('AUTHENTICATE');
});
// Profile
router.get('/profile', (req, res, next) => {
res.send('PROFILE');
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
boe*_*m_s 17
错误来自该bcrypt.hash
方法.在您的情况下,您有以下代码:
bcrypt.hash(newUser.password, salt , (err, hash) => { ... }
Run Code Online (Sandbox Code Playgroud)
我认为你的问题来自newUser.password
必须是空的(null
或undefined
).错误说data and salt arguments required
.看起来你的盐是正确生成的,你没有检查是否newUser.password === undefined
,所以这是我的赌注:不知何故newUser.password
是未定义的.
此外,您可以genSalt
通过if(err) throw (err);
在调用方法之后添加方法来检查方法是否正常工作bcrypt.hash
.
希望它有所帮助,
祝你好运
归档时间: |
|
查看次数: |
14243 次 |
最近记录: |