我保存用户的数据由他们的不和谐的ID到我的数据库,直到今天,我只使用它来获取他们的数据,但我试图获取用户由他们的ID保存到数据库,看到它找不到用户,因为在数据库中的ID是不正确的。
例如,如果用户id为358262932791885824
,它会将其保存为358262932791885800
,或者如果用户id为243422653547937792
,它会将其保存为243422653547937800
。我正在搜索解决方案,发现someone in this post说这是因为Number.MAX_SAFE_INTEGER
,但我不理解它,无法找到该问题的解决方案。如果你能帮我了解情况,解决问题,我会很高兴的!
如果用户未在其discord ID上保存数据,则此代码将创建一个新ID
let kontrol = await user.findOne({discord_id: message.author.id});
if (!kontrol) {
let newUser = new user({
discord_id: message.author.id,
xp: 0,
level: 0,
money: 0,
inventory: [],
daily: {
last: 0,
next: 0
},
warnings: {
adWarn: 0
}
})
await newUser.save();
}
我的使用者结构描述
const mongoose = require('mongoose')
const user = new mongoose.Schema({
discord_id: {
type: Number,
unique: true,
required: true
},
xp: {
type: Number,
default: 0,
required: true
},
level: {
type: Number,
default: 0,
required: true
},
money: {
type: Number,
default: 0,
required: true
},
inventory: {
type: Array,
default: [],
required: true
},
daily: {
last: {
type: Number,
default: 0,
required: true
},
next: {
type: Number,
default: 0,
required: true
}
},
warnings: {
adWarn: {
type: Number,
default: 0,
required: true
},
}
});
module.exports = mongoose.model('user', user)
```js
Tried to save users datas with discord ids.
Data saved without error or problem but the discord id is not correct.
When i try to fetch data by id tho, theres no problem fetching it from database.
But when i try to fetch user by id from database, i cant.
1条答案
按热度按时间balp4ylt1#
这意味着
discord_id
应该是一个字符串。每个Discord ID/snowflake都应该存储为字符串。如果您将一个ID存储为整数,并且它大于Number.MAX_SAFE_INTEGER
(2^53),则它将无法以数字类型表示,并且会被JavaScript转换为其他类型(例如将最后一个数字改为零)。另请参阅Why is my query output showing something completely different than what it is in the database?和Modified data when using sqlite3