将我的欢迎频道 ID 设置为 mongodb 为什么我的最后两位数字发生变化

While setting my welcome channel ID to mongodb why my last two digit changes

当我尝试将我的欢迎频道 ID 设置为 MongoDB 为什么我的频道最后两位数字更改为“00” 例如 954226649841430572 --> (when i send to database it changes to) 954226649841430500

我的代码:

 await guild.updateOne(
          { guildID },
          { $set: { leavechannel: channelID } }
        );

在 MongoDB 中,由于存储大 Int 的性质,有时可以削减大数字。不要将原始值保存为数字,而是首先使用 .toString() 方法并将值存储为字符串。这将消除 MongoDB 切断大 Int 的问题,并且因为 JS 是动态类型的,所以一旦从 MongoDB.

中获取 ID,将不会影响将其用作数字。

编辑:除了大 Int 问题,Discord.js 无论如何都会将雪花解析为字符串。

来自https://discord.com/developers/docs/reference#snowflakes 在某些情况下,我们的 API 和网关可能会 return ID 以意外的格式出现。在内部,Discord 将 ID 存储为整数雪花。当我们将 ID 序列化为 JSON 时,我们将 bigints 转换为字符串。鉴于所有 Discord ID 都是雪花,你应该总是期待一个字符串。