Node.js 用大整数续写js
我有一个用NodeJS编写的应用程序,并使用Sequelize JS ORM库访问我的数据库MySql 我的问题是,我的数据库中有一列是BIGINT,当它的值很大时,我检索它时会得到错误的值 例如,当数据库中的值为: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
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
}
});