ВТОРОЕ РЕДАКТИРОВАНИЕ
Проблема была вызвана значением MAX_INTEGER_VALUE, которое меньше целочисленного значения, которое я передавал.Я изменил столбец таблицы MySQL на TEXT
вместо BIGINT
, и все возвращается правильно.
Спасибо за помощь!
РЕДАКТИРОВАТЬ
Итак, я только что понял, что переменная userID
и переменные guildID
передаются с использованием этой строки кода.
mysqlModule.userCrewSearch(575783451018526744, 282997056438665217);
Однако значения, которые передаютсяв операторе SQL переведите последние две цифры числа в '00'.Таким образом, вместо 575783451018526744
значение, передаваемое в оператор SQL, равно 575783451018526700
.
Так почему же это значение изменяется, когда ничего не происходит?я делаю в моем коде меняются эти значения?
Исходное сообщение
Я буду держать это коротким и приятным.Я пытаюсь выполнить запрос, используя пакет MySQL nodejs.Я не уверен, где я ошибаюсь, но всякий раз, когда я вызываю свою функцию, которая выполняет мой запрос, я всегда возвращаю пустой массив, если я не жестко закодировал значения в запросе SQL.
Вот код:
// Search for the User's Crew
function userCrewSearch(guildID, userID) {
pool.getConnection(function(err, connection) {
if(err) {
return console.log(err);
}
var sql = "SELECT * FROM `crew-members` WHERE `userID`=? AND `guildID`=?;";
console.log(sql);
connection.query(sql, [guildID, userID], function(err, results) {
connection.release(); // always put connection back in pool after last query
if(err) {
return console.log(err);
}
return console.log(results);
});
});
}
Я вызываю эту функцию так: userCrewSearch(575783451018526744, 282997056438665217);
Оба значения, которые я передаю, являются целыми числами.Однако это то, что я получаю в своей консоли.
Однако, вот мой код со значениями, жестко закодированными в SQL ..., к которомуЗатем код возвращает результат в виде пакета RowDataPacket.
// Search for the User's Crew
function userCrewSearch(guildID, userID) {
pool.getConnection(function(err, connection) {
if(err) {
return console.log(err);
}
var sql = "SELECT * FROM `crew-members` WHERE `userID`=282997056438665217 AND `guildID`=575783451018526744;";
console.log(sql);
connection.query(sql, [guildID, userID], function(err, results) {
connection.release(); // always put connection back in pool after last query
if(err) {
return console.log(err);
}
return console.log(results);
});
});
}
Вот результат.
BonusВопрос: Как мне обращаться с RowDataPacket?Могу ли я преобразовать это непосредственно в объект, чтобы я мог вызвать results.crewID
и вернуть только это значение?