Для паролей с солью и хеширования я использовал метод Bcrypt, но он показывает, error = new Error («требуются данные и аргументы соли»);

для соли и хеширования паролей я использовал метод 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

как решить проблему..

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Судя по полученной вами ошибке, похоже, что функция 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)
        });
      });
    })
  }
}

Другие вопросы по теме