Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 用大整数续写js_Node.js_Sequelize.js_Bigint - Fatal编程技术网

Node.js 用大整数续写js

Node.js 用大整数续写js,node.js,sequelize.js,bigint,Node.js,Sequelize.js,Bigint,我有一个用NodeJS编写的应用程序,并使用Sequelize JS ORM库访问我的数据库MySql 我的问题是,我的数据库中有一列是BIGINT,当它的值很大时,我检索它时会得到错误的值 例如,当数据库中的值为:10205918797953057时,当我使用sequelize获取它时,我将获取10205918797953056 我尝试使用大整数库,但没有成功 欢迎任何建议 注意:我无法将数据类型更改为VARCHAR。您应该在mysql模块上启用supportBigNumbers和可能的big

我有一个用NodeJS编写的应用程序,并使用Sequelize JS ORM库访问我的数据库MySql

我的问题是,我的数据库中有一列是BIGINT,当它的值很大时,我检索它时会得到错误的值

例如,当数据库中的值为:
10205918797953057
时,当我使用sequelize获取它时,我将获取
10205918797953056

我尝试使用
大整数
库,但没有成功

欢迎任何建议


注意:我无法将数据类型更改为VARCHAR。

您应该在mysql模块上启用
supportBigNumbers
和可能的
bigNumberStrings


Jan Aagaard Meier的回答是正确的和有效的,但很少有需要考虑的事情。

根据:

supportBigNumbers
:处理数据库中的大数字(BIGINT和DECIMAL列)时,应启用此选项(默认值:false)

bigNumberStrings
:同时启用
supportBigNumbers
bigNumberStrings
会强制将大数字(BIGINT和十进制列)始终作为JavaScript字符串对象返回(默认值:
false
)。启用
supportBigNumbers
但禁用
bigNumberStrings
仅当无法用[JavaScript数字对象]()准确表示大数字时(当它们超过[-2^53,+2^53]范围时会发生这种情况),否则它们将作为数字对象返回。如果禁用了
supportBigNumbers
,则忽略此选项

因此,在某些情况下,要正确处理返回值,请同时使用
bigNumberStrings
supportBigNumbers
可能是更好的选择
保证返回一个字符串值

它可能是
数据类型。BIGINT
列在Mysql中定义,在Sequelize中定义为
BIGINT
非常感谢mate为我们节省了时间。
new Sequelize(..., {
  dialect: 'mysql',
  dialectOptions: {
    supportBigNumbers: true
  }
});