This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

проблема с mysql

Stepan

Новый участник
12 Фев 2023
45
2
20

что делать если пишет db query is not a function
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,794
1,595
211
28
Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?

1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
Можешь на гит залить и дать юрл?
 

Stepan

Новый участник
12 Фев 2023
45
2
20

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
У него файл называется mysql.js, .. это относительный путь текущей директории.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,794
1,595
211
28
У него файл называется mysql.js, .. это относительный путь текущей директории.
Ну, я не уверен, что используются две точки.
Если ты знаешь - я не против, просто поинтересовался.
 

Stepan

Новый участник
12 Фев 2023
45
2
20
две точки типо выход из папки(там это regauth)и поиск в предыдушем катологе(короче по packages)
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
могу на яндекс или гугл диск
ок
И да, так можно импортировать, таким образом ты импортируешь все что есть в файле объектом и можешь обращаться к экспортируемым функциям/переменным и т.д. через точку
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,794
1,595
211
28
А мы точно уверены, что у него установлена она?
Я вот к этому и веду.
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
Реакции: XDeveluxe

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,794
1,595
211
28

kwert887

Активный участник
26 Фев 2021
253
42
85
Попробуй этот код
JavaScript:
const DB = require('../mysql.js');
const bcrypt = require('bcrypt');

mp.events.add('playerJoin', (player) => {
    player.call('showLoginDialog');
});

mp.events.add('onLoginAttempt', (player, data) => {
    data = JSON.parse(data); // преобразовуем данные из json в объект
    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function(error, results) { // ищем аккаунт по логину
            connection.release(); // освобождаем соединение с базой данных
            if (error) throw error;
            if (results.length == 0) return player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если аккаунт с таким логином не найден, то возвращаем на клиент текст ошибки

            const passwordHash = results[0].password; // если же аккаунт есть, то берем его хеш пароля
            bcrypt.compare(data.password, passwordHash, function(err, isMatched) { // сравниваем хэши паролей из базы данных и того что указал пользователь
                if (err) throw err;
                if (isMatched) return player.call('hideLoginDialog'); // если пароли не совпадают, значит пользователь авторизовался успешно
                player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если же пароли не совпали, то опять таки возвращаем на клиент текст ошибки при помощи события showAuthError
            });
        });
    });
});

mp.events.add('onRegisterAttempt', (player, data) => {
    data = JSON.parse(data);

    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT id FROM accounts WHERE login = ?', [data.login], function(error, results) { // Проверяем уникальность логина
            if (error) throw error;
            if (results.length > 0) {
                connection.release(); // освобождаем соединение с базой данных
                return player.call('showAuthError', ['Аккаунт с таким Логином уже существует']); // Если такой логин уже есть, то возвращаем ошибку
            }

            bcrypt.hash(data.password, saltRounds, function(err, passwordHash) { // Создаем хэш пароля
                if (err) throw err;
                connection.query('INSERT INTO accounts SET login = ?, password = ?', [data.login, passwordHash], function(error, results) { // Добавляем аккаунт в базу данных
                    connection.release(); // освобождаем соединение с базой данных
                    if (error) throw error;
                    player.call('hideLoginDialog'); // Скрываем окно авторизации
                });
            });
        });
    });
});
 

Stepan

Новый участник
12 Фев 2023
45
2
20
выводит db get connection is not a function,а еще ошибка не надолго пропала,но в бд не добавлялась данные реги. Щас такая ошибка
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143

Все куда проще.


npm remove mysql
npm install mysql2
 
Реакции: XDeveluxe и Inoi