将我的欢迎频道 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 都是雪花,你应该总是期待一个字符串。
当我尝试将我的欢迎频道 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.
编辑:除了大 Int 问题,Discord.js 无论如何都会将雪花解析为字符串。
来自https://discord.com/developers/docs/reference#snowflakes 在某些情况下,我们的 API 和网关可能会 return ID 以意外的格式出现。在内部,Discord 将 ID 存储为整数雪花。当我们将 ID 序列化为 JSON 时,我们将 bigints 转换为字符串。鉴于所有 Discord ID 都是雪花,你应该总是期待一个字符串。