Nod.js функция bycrapt.compare что я делаю не так
Не получается сравнить пароли, буду благодарен за любую помощь.
const { name, email, pass } = req.body
db.query('SELECT * FROM users WHERE name=$1::text AND email=$2::text AND pass=$3::text', [name, email, pass], (err, row) =>{
if(err){
console.log('Error executing query', err.stack);
}
bcrypt.compareSync(pass, req.params.pass, function(err, res){
if(err){
console.log(err)
}
})
res.json(row.rows[0])
вот такая ошибка в консоли
C:\Users\User\Desktop\Fullstack\server\node_modules\pg\lib\query.js:143
throw err
^
Error: data and hash arguments required
at Object.compareSync (C:\Users\User\Desktop\Fullstack\server\node_modules\bcrypt\bcrypt.js:166:15)
at C:\Users\User\Desktop\Fullstack\server\controller\user.controller.js:75:32
at Query.<anonymous> (C:\Users\User\Desktop\Fullstack\server\node_modules\pg-pool\index.js:421:18)
at Query.handleReadyForQuery (C:\Users\User\Desktop\Fullstack\server\node_modules\pg\lib\query.js:139:14)
at Client._handleReadyForQuery (C:\Users\User\Desktop\Fullstack\server\node_modules\pg\lib\client.js:290:19)
at Connection.emit (node:events:527:28)
at C:\Users\User\Desktop\Fullstack\server\node_modules\pg\lib\connection.js:114:12
at Parser.parse (C:\Users\User\Desktop\Fullstack\server\node_modules\pg-protocol\dist\parser.js:40:17)
at Socket.<anonymous> (C:\Users\User\Desktop\Fullstack\server\node_modules\pg-protocol\dist\index.js:11:42)
at Socket.emit (node:events:527:28)
Чуть другой код:
async getOneUser (req, res, hashPass) {
try{
//const id = req.params.id
const { name, email, pass } = req.body
db.query('SELECT * FROM users WHERE name=$1::text AND email=$2::text AND pass=$3::text', [name, email, pass], (err, row) =>{
if(err){
console.log('Error executing query', err.stack);
}
bcrypt.compare(pass, hashPass, function(err, res){
if(err){
console.log(err)
}
})
res.json(row.rows[0])
/*if(hashSync){
res.json({"message": "login successful"})
}else{
res.json({"message": "wrong password"})
}
res.json(row.rows[0]);*/
});
}catch(e){
console.log(e);
//res.send({message: "Ошобка сервера getOneUser"})
}
}
hashPass беру от сюда
async createUser (req, res) { //Регистрация пользователя.
try{
const {name, surname, email, pass, pass2} = req.body
db.query('SELECT * FROM users WHERE email = $1::text', [email] , (err, row) =>{
if(err){
console.log('Error executing query', err.stack);
}
//console.log(row);
let isTrue=false;
if(row.rowCount){//Проверка существет ли такой email
for(let i=0; i < row.rows.length; i++){
if(row.rows[i].email === email){
isTrue = true;
break;
}
}
}
if(isTrue){// если есть email то показываем его
res.json(row.rows[0].email)
}else{
//res.json({"message": "Регистрирую пользователя"})
if(pass==pass2){// Сравнение паролев
(async () =>{// регистрация пользователя если email отсутствует
const hashPass = bcrypt.hashSync(pass, 15)
const hashPass2 = bcrypt.hashSync(pass2, 15)
const newPerson = await db.query(`INSERT INTO users(name, surname, email, pass, pass2) values ($1, $2, $3, $4, $5) RETURNING *`, [name, surname, email, hashPass, hashPass2])
res.json(newPerson.rows[0]);
})();
}else{
res.json({"message" : "пароли не совпадают"})
}
}
});
} catch(e){
console.log(e)
res.send({message: "Ошобка сервера"})
}
}
это фаил use.routs.js
const Router = require('express')
const userController = require('../controller/user.controller')
const router = new Router()
router.post('/registration', userController.createUser)
router.get('/user', userController.getUsers)
router.get('/login', userController.getOneUser)
router.put('/user', userController.updateUser)
router.delete('/delete/:id', userController.deleteUser)
module.exports = router
Это фаил inde.js
const express = require('express')
const config = require('config')
const userRouter = require('./routs/user.routs')
const app = express()
app.use(express.json())
const PORT = config.get('serverPort')
app.use('/api', userRouter)
const start = async () => {
try{
app.listen(PORT, () => {
console.log('Сервер запущен на порту', PORT)
})
}catch(e){
}
}
start()