0

День добрый. Второй день бьюсь головой не знаю как вернуть значение.

Суть такая: Делаю форму авторизации. При нажатии на кнопку войти собираются значения из полей, шифруются в MD5 и отправляются на сервер NODE.JS

Login(){
        let secure = md5(this.state.login + this.state.password);
        console.log(secure);
        axios.post(`${cfg.server.ip}/login`, {
            'hash': secure
        })
        .then((data) => {
            console.log(data.data);
        })
        .catch((error) => {
           alert(error);
        });
    }

Сервер же в свою очередь обрабатывает полученный хеш, делает запрос к БД MySQL, и если полученный хеш имеется в БД(т.е. пользователь существует), возвращает true, если пароль не верный(соответственно хеш тоже) возвращает false (в дальнейшем будет заменено на токен)

fastify.post('/login', (req) => {   
  const hash = req.body.hash;
  const query =`SELECT COUNT(*) AS \'cnt\' FROM admin where login = \'${hash}\'`;
  connection.query(query, (error, result) => {
    if(error) console.log(error);
    if(result[0].cnt === 0) {
      return false;
    } else {
      return true;
    }
  });
});

Как вернуть пользователю true или false?

ΝNL993
  • 3,453

1 Answers1

0

Все оказалось проще.

const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({host:'127.0.0.1',port: 3306, user: 'root', database: 'phantom'});
const [rows] = await connection.execute('SELECT COUNT(*) AS `cnt` FROM `admin` where `login` = ?', [hash]);

из rows[0].cnt уже получаю результат