Посмотреть вложение 7998Посмотреть вложение 7997Посмотреть вложение 7996
что делать если пишет db query is not a function
могу на яндекс или гугл дискМожешь на гит залить и дать юрл?
У него файл называется mysql.js, .. это относительный путь текущей директории.Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?
1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
Ну, я не уверен, что используются две точки.У него файл называется mysql.js, .. это относительный путь текущей директории.
две точки типо выход из папки(там это regauth)и поиск в предыдушем катологе(короче по packages)Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?
1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
окмогу на яндекс или гугл диск
И да, так можно импортировать, таким образом ты импортируешь все что есть в файле объектом и можешь обращаться к экспортируемым функциям/переменным и т.д. через точкуПосмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?
1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
npm install mysqlПосмотреть вложение 8002
А где сама библиотека?
я качал ееnpm install mysql
Библиотека находится в папке node_modules, которая в свою очередь находится на одном уровне с packages.json
Залей мне просто код куда-то, посмотрю.
А мы точно уверены, что у него установлена она?npm install mysql
Библиотека находится в папке node_modules, которая в свою очередь находится на одном уровне с packages.json
Если есть подключение, то очевидно что установлена, там же блок трай кетчА мы точно уверены, что у него установлена она?
Я вот к этому и веду.
Ладно, согласен, не посмотрел.Если есть подключение, то очевидно что установлена, там же блок трай кетч
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'); // Скрываем окно авторизации
});
});
});
});
});
выводит db get connection is not a function,а еще ошибка не надолго пропала,но в бд не добавлялась данные реги. Щас такая ошибкаПопробуй этот код
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'); // Скрываем окно авторизации }); }); }); }); });
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?