Tengo problemas para iniciar sesión, con hash, hice la llamada en el método de creación y funciona normalmente, pero en el inicio de sesión no, vi errores similares a los míos aquí en la pila, pero no entendí cómo implementarlo, ¿podría dar una fuerza? el mensaje de error que devuelve es "Error: se requieren datos y argumentos hash" la línea donde se encuentra el error sería do: const validPass
const connection = require('../database/connection'); const bcrypt = require('bcrypt'); async create(request, response){ const {id, email, password, cpf, name, lastName, cellphone} = request.body; let salt = await bcrypt.genSaltSync(10); let hash = bcrypt.hashSync(password, salt); const newUser = await connection('login').insert({ id, email, password:hash, cpf, name, lastName, cellphone, }); return response.json({id: newUser[0], token: hash.toString('hex')}); }, async login(request, response){ const {email, password} = request.body; const user = await connection('login').first('*').where({email:email}); if(user){ const validPass = await bcrypt.compareSync(password, user.hash); if(validPass){ response.status(200).json('valid Email and pass!'); }else{ response.json('Wrong pass!') } }else{ response.status(400).json({error: 'No user foung with this E-mail'}); } return response.json(user); }En esta línea:
const validPass = await bcrypt.compareSync(password, user.hash); Cambie user.hash a user.password .
Nota adicional: no necesita esas esperas antes de que llame la función sincrónica.