我有一个节点JS应用程序从MySql数据库获取数据。列的列类型为bigint(20)。这将返回一个大整数值,这超出了javascript编号范围。处理这个问题的最佳方法是什么?
示例代码
let rows = database.query("select resourcekey from resourceTable");
for(var i = 0; i < rows.length; i++) {
console.log(rows[i].resourcekey);
}
示例resourceKey:9220610450398789367 返回值:9220610450398790000
答案 0 :(得分:0)
由于您在编程方面进行计算,即Node JS,将内容存储为VARCHAR(50)
并在Node JS中将其解析为Integer:
for(var i = 0; i < rows.length; i++) {
console.log(parseInt(rows[i].resourcekey));
}
MySQL正在搞乱巨大的整数值,除非你在MySQL服务器本身进行数学运算,否则你不需要。
答案 1 :(得分:0)
NodeJS mysql提供了supportBigNumbers和bigNumberStrings配置选项。启用这两个操作将强制返回大数字(BIGINT和Decimal)作为javascript字符串返回。
let dbConnection = mysql.createConnection({supportBigNumbers: true, bigNumberStrings: true});