在nodeJS中处理从数据库返回的大数字的最佳方法是什么?

时间:2018-05-14 09:54:46

标签: mysql node.js

我有一个节点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

2 个答案:

答案 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});