第二编辑
问题是由MAX_INTEGER_VALUE引起的,该值低于我传递的整数值。我将MySQL表列更改为TEXT
而不是BIGINT
,所有内容均已正确返回。
感谢所有帮助!
编辑
因此,我刚刚意识到userID
变量和guildID
变量正在使用此代码行传递。
mysqlModule.userCrewSearch(575783451018526744, 282997056438665217);
但是,提供给SQL语句的值会将数字的最后两位数字变为'00'。因此,传递给SQL语句的值为575783451018526744
,而不是575783451018526700
。
那么当我在代码中没有做任何事情来更改这些值时,为什么还要更改此值?
原始帖子
我会简短而甜美的。我正在尝试使用nodejs MySQL包运行查询。我不确定哪里出错了,但是每当我调用执行查询的函数时,总会返回一个空数组,除非我将值硬编码到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);
});
});
}
这里是结果。
奖励问题:如何处理RowDataPacket?是否可以将其直接转换为对象,以便调用results.crewID
并仅返回该值?
答案 0 :(得分:0)
几天前我遇到了同样的问题。我已经通过将参数转换为字符串解决了这一问题。
['रामको' 'कम्पनी']
答案 1 :(得分:0)
尝试在数字参数前添加+,它将转换为数字,对我有用-
connection.query(sql, [+guildID, +userID], function(err, results) {
对于奖励问题的答案,您可以使用
直接访问crewID或其他一些键results[0].crewID
或执行类似操作-
const [ result ] = results;
console.log(result.crewID)