для соли и хеширования паролей я использовал метод Bcrypt, но он показывает, error = new Error('Требуются аргументы данных и соли'); я думаю, что у моего кода есть проблема, пожалуйста, мне нужна помощь, пожалуйста; Веб-сайт электронной коммерции - это мой проект, поэтому я создал форму регистрации в панели пользователя.
*user.js
const userHelpers=require('../helpers/user-helpers')
router.get('/signup',(req,res)=>{
res.render('user/signup')
})
router.post('/signup',(req,res)=>{
userHelpers.doSignup(req.body).then((response)=>{
console.info(response);
})
пользователь-helpers.js
var db=require('../config/connection')
var collection=require('../config/collections')
const bcrypt=require('bcrypt')
module.exports = {
doSignup:(userData)=>{
return new Promise(async(resolve,reject)=>{
// var salt = await bcrypt.genSalt(10);
userData.Password= await bcrypt.hash(userData.Password ,10)
db.get().collection(collection.USER_COLLECTION).insertOne(userData).then((data)=>{
resolve(data)
});
});
}
коллекция.js
module.exports = {
PRODUCT_COLLECTION:'product',
USER_COLLECTION:'user'
}
это мой код, но выдает ошибку
error = new Error('data and salt arguments required');
^
Error: data and salt arguments required
как решить проблему..



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Судя по полученной вами ошибке, похоже, что функция bcrypt.hash не работает, потому что userData.Password может быть не установлено.
Убедитесь, что вы правильно получили userData.Password с запросом.
Если вы используете экспресс, у вас может не быть преобразования в JSON, поэтому добавьте промежуточное ПО для анализа данных в JSON, например:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/', function(request, response){
console.info(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Взгляните на эти предыдущие вопросы и ответы:
Спасибо, я получил решение. Проблема в user-helpers.js.
user-helpers.js
const bcrypt = require('bcrypt')
module.exports = {
doSignup: (userData) => {
return new Promise (async(resolve, reject) => {
userData.password = salt = await bcrypt.genSalt(10);
const hashedpassword = await bcrypt.hash(userData.password, 10, (err, password, hash) => {
if (err)
throw (err);
else
password=hash
db.get().collection(collection.USER_COLLECTION).insertOne(userData).then((data) => {
resolve(data.insertedId)
console.info(userData.password)
});
});
})
}
}