es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: Los datos deben ser una cadena de texto o un buffer y la sal debe ser una cadena de sal o un número de rondas.

Estoy usando bcrypt para cifrar la contraseña, pero cuando uso Postman para probar la API, me da este error: los datos deben ser una cadena o un búfer y la sal debe ser una cadena de sal o un número de rondas. Aquí está mi código:

const router = require(‘express’).Router();
const pool = require(‘../utils/db’)
const bcrypt = require(‘bcrypt’)
const jwt = require(‘jsonwebtoken’)

router.post(“/register”, async (req, res) => {

try {
    const { username, email, password } = req.body
    const user = await pool.query('select * from users where email = $1', [
        email
    ])
    if (user.rows.length !== 0) {
        return res.status(401).send('el usuario ya existe')
    }
    const saltRounds = 10;
    const salt = await bcrypt.genSalt(saltRounds)

    const bcryptPassword = await bcrypt.hash(password,salt)
    const newUser = pool.query('insert into users(username,password,email) values ($1,$2,$3)', [username, bcryptPassword, email])
    jwt.sign({user}, 'secretkey', { expiresIn: '30s' }, (err, token) => {
        res.json({
          token
        });
      });


}
catch (err) {
    console.log(err)
}

})

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que no estás pasando los parámetros correctos a la función bcrypt.hash(). La función bcrypt.hash() requiere dos parámetros: el parámetro data, que debe ser una cadena de texto o un búfer, y el parámetro salt, que debe ser una cadena de sal o un número de rondas. Asegúrate de pasar los parámetros correctos a la función bcrypt.hash().

Comments are closed.