用大整数续集js

sequelize js with big integers

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

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

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

我尝试使用 big-integer 库,但没有成功。

欢迎任何建议。

P.S: 我无法将数据类型更改为 VARCHAR。

您应该在 mysql 模块上启用 supportBigNumbers 并可能启用 bigNumberStringshttps://github.com/felixge/node-mysql#connection-options

new Sequelize(..., {
  dialect: 'mysql',
  dialectOptions: {
    supportBigNumbers: true
  }
});

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

根据Sequelize Docs (connection-options)

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

bigNumberStrings:同时启用 supportBigNumbersbigNumberStrings 强制大数字(BIGINT 和 DECIMAL 列)始终 returned 作为 JavaScript 字符串对象(默认值:false)。启用 supportBigNumbers 但禁用 bigNumberStrings 将 return 大数字作为 String 对象仅当它们不能用 JavaScript Number objects 准确表示时(当它们超过 [-2^53 , +2^53] 范围),否则它们将被 returned 作为 Number 对象。如果禁用 supportBigNumbers,则忽略此选项。

因此,在某些情况下,要正确处理 returned 值,请同时使用 bigNumberStringssupportBigNumbers 可能是更好的选择 保证 return.

中的字符串值