繁体   English   中英

Nodejs Sequelize 的 FindOne() 模型包含四舍五入或截断的值

[英]FindOne() model for Nodejs Sequelize contains rounded or truncated values

我正在运行以下代码,其中标签连接到我在本地设置的 sqlite 数据库。 目前我有以下代码尝试从数据库中提取数据,作为测试。

console.log('debug after here.');
 
const tag = await Tags.findOne({ where: { guild: message.guild.id, channel: message.channel.id } });

console.log(' in guild: ' + message.guild.id);
console.log('out guild: ' + tag.guild);
console.log(' in chanl: ' + message.channel.id);
console.log('out chanl: ' + tag.channel);
console.log('out lpmID: ' + tag.latestPollMessageId);

结果如下。

debug after here.
 in guild: 228902712417189890
out guild: 228902712417189900
 in chanl: 634445907059933195
out chanl: 634445907059933200
out lpmID: 754129896791474200

如您所见,输入公会和输入通道值与返回的公会和通道值不匹配。 我查看了实际的 .sqlite 文件并看到了以下内容:

数据库值

如您所见,这些值并不代表我在运行 .findOne() 时实际得到的值,但我不知道为什么会这样。 看起来它通常被四舍五入到最接近的一百,但我看到一些结果在我的测试中向下而不是向上四舍五入。

在 JavaScript 中,您最多只能将 53 位存储为一个数字。 这意味着您可以以安全整数格式存储的最大数字是 9007199254740991。(请参阅 Number.MAX_SAFE_INTEGER)。

在模型定义中使用 id 作为字符串或数据类型作为 bigint

我建议你阅读这篇什么是 JavaScript 的最高整数值,一个数字可以在不损失精度的情况下达到?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM