gpt4 book ai didi

javascript - 错误 : data and salt arguments required

转载 作者:IT老高 更新时间:2023-10-28 23:23:54 26 4
gpt4 key购买 nike

我正在尝试使用 post 请求将用户保存到 mongodb 数据库,但出现错误 bcrypt Error: data and hash arguments required 。这是一个非常简单的代码设置,但我无法弄清楚任何事情错了。模型/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);
});
});
}
路线/users.js

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;
服务器正在运行,但在使用 postman chrome 发布请求后显示错误,并且服务器停止工作,如图所示。 enter image description here

最佳答案

错误来自 bcrypt.hash 方法。在您的情况下,您有以下代码:

bcrypt.hash(newUser.password, salt , (err, hash) => { ... }

我认为您的问题来自必须为空的 newUser.password(nullundefined)。错误提示 需要数据和盐参数。看起来您的盐是正确生成的,并且您没有检查是否 newUser.password === undefined,所以这是我的赌注:不知何故 newUser.password 未定义。

另外,您可以在调用 genSalt 方法后添加 if(err) throw (err); 来检查它是否正常工作,就像对 所做的那样bcrypt.hash 方法。

关于javascript - 错误 : data and salt arguments required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com