我正在尝试使用post请求将用户保存到mongodb数据库,如下所示,但我收到错误bcrypt错误:需要数据和哈希参数。这是代码的非常简单的设置,但我不知道它有什么问题。models
/ 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;
服务器正在运行,但是在使用邮递员chrome后显示请求错误,并且服务器停止工作,如图中所示。
错误来自bcrypt.hash
方法。就您而言,您具有以下代码段:
bcrypt.hash(newUser.password, salt , (err, hash) => { ... }
我认为您的问题来自newUser.password
必须为空的(null
或undefined
)。错误说data and salt arguments required
。看来您的盐是正确生成的,并且您没有检查是否newUser.password === undefined
,所以这是我的赌注:某种程度上newUser.password
是不确定的。
另外,您可以像调用方法一样在调用后genSalt
添加该方法,以检查该方法是否工作正常。if(err) throw (err);``bcrypt.hash
希望对您有帮助,
最好的问候
我不知道我做错了什么。。。我得到了球员的错误。draw()函数。它所说的不好的争论是在爱情中。图样矩形()方法。这意味着v.x是一个糟糕的论点。但它应该起作用。v.x和v.y都应该工作。因为它访问表或数组中元素的字段,对吗?有人能告诉我我做错了什么,以及如何解决这个问题吗?非常感谢!这是我的代码:
我们有一个实体的层次结构,例如,抽象Basket和两个concrete,它们又可以包含一些其他项的列表,例如,具有完全相同的层次结构(SaleBasketItem,ReturnBasketItem)。 因此,当我尝试执行hql查询时,问题就出现了 其中动态地为“sale”或“return”。然后,我将该查询放入中,其类型为我需要的,并尝试,其中是表示混凝土篮状态的一些枚举(每个混凝土类都不同,在抽
当尝试ViewChild时,我会得到错误。错误为“未提供'opts'的参数。” @ViewChild都给出了错误。 ts(11,2):错误TS2554:应为2个参数,但得到1。
问题内容: 运行此代码时出现4个错误,这些错误将用户的电子邮件地址添加到名为的表中称为的数据库中。 $ con = new mysqli(’localhost’,’root’,’‘,’ecommerce’); 错误是这样的: 警告:mysqli_query()至少需要2个参数,第27行给出1个 第27行: $ query = mysqli_query(“ SELECT * FROM subscri
我得到了 错误:Route.Get()需要一个回调函数,但得到了一个[object Undefined] 这是我的路由文件: 错误日志: 错误:route.get()需要回调函数,但在route.(anonymous function)[as get](C:\users\PAI\DesktoP\mean\node_modules\express\lib\router\route.js:202:15
我有一个问题在这里我不知道如何解决这个问题,本尝试任何我知道解决这个仍然没有解决方案,请帮助 我有2个模块 主要的卢阿: 外部模块dog.lua: 堆栈回溯: 现在还在想在这里做什么。这是唯一阻碍我项目的事情。请帮忙,谢谢:)