javascript - 将整数传递给查询时,NodeJS MySQL 返回空数组

标签 javascript mysql node.js discord.js node-mysql

第二次编辑

问题是由 MAX_INTEGER_VALUE 引起的,它低于我传递的整数值。我将 MySQL 表列更改为 TEXT 而不是 BIGINT 并且所有内容都被正确返回。

感谢大家的帮助!

编辑

所以我才意识到 userID 变量和 guildID 变量是使用这行代码传递的。

mysqlModule.userCrewSearch(575783451018526744, 282997056438665217);

但是,提供给 SQL 语句的值会将数字的最后两位数字变为“00”。因此,传递给 SQL 语句的值不是 575783451018526744 而是 575783451018526700

Edited Question Image

那么,当我在代码中所做的任何事情都没有改变这些值时,为什么这个值被改变了?

原帖

我会保持简短和甜蜜。我正在尝试使用 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);

我传递的两个值都是整数。然而,这就是我在控制台中得到的。

Broken Code

但是,这是我的代码,其中的值被硬编码到 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);
        });
    });
}

这是结果。

Working Code

奖励问题:我如何处理 RowDataPacket?我能否将其直接转换为对象,以便调用 results.crewID 并仅返回该值?

最佳答案

几天前我遇到了同样的问题。我通过将参数转换为字符串解决了这个问题。

function userCrewSearch(String(guildID), String(userID)) {

       //  your code here 
}

关于javascript - 将整数传递给查询时,NodeJS MySQL 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520919/

相关文章:

javascript - 在 Jade 中循环并显示来自 Mongodb 的数据

javascript - 在 Firefox 中拖动鼠标时如何防止文本选择?

javascript - 用 OR 条件声明对象的目的是什么?

php - 在不同于 Ubuntu/Windows 的 Mac 上运行 PHP & MySQL

node.js - 跟踪程序中的内部版本号和版本

node.js - 如何使用 Firestore 从 DialogFlow 实现上的 snap 中获取 map 数组

javascript - 对多个元素使用相同的点击功能(Jquery)

javascript - 从第一个斜杠拆分 javascript 中的图像路径

mysql - 优化Innodb表以释放可用空间

c++ - Mysql 5.5 LOAD DATA INFILE 权限