重复 mongodb 个对象参数但只显示一个?最后一位数字四舍五入?

Duplicate mongodb objects params but only one gets shown? Last digits get rounded?

所以我的数据库出现了一些异常情况。当我登录后发现我的余额不像以前那样时,它就开始了。然后我发现两个明显不同但号码相同的账户。无论如何。我正在使用护照,策略是蒸汽。这是我的两个编码形式的问题:

第一个怪事: *当使用 steam 作为策略时,我找回了一个有 steam id 的用户。

{ steamid: '76561198053118469',
  communityvisibilitystate: 3,
  profilestate: 1,
  personaname: 'What Comes Around™',
  commentpermission: 1,
  profileurl: 'https://steamcommunity.com/id/WCAOfficial/',
  avatar:
   'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/99/99f12061912d535322c9a23ee7d17ce341c27c56.jpg',
  avatarmedium:
   'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/99/99f12061912d535322c9a23ee7d17ce341c27c56_medium.jpg',
  avatarfull:
   'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/99/99f12061912d535322c9a23ee7d17ce341c27c56_full.jpg',
  lastlogoff: 1587637203,
  personastate: 1,
  primaryclanid: '103582791466140922',
  timecreated: 1321956195,
  personastateflags: 0 }

这是返回的req.user。如您所见,user.steamid 是:76561198053118469

这是我数据库中的当前用户集合:

[ { balance: 100,
    _id: 5e9a43519eabc40017ed6a85,
    userid: 76561198053118460,
    profileurl: 'https://steamcommunity.com/id/WCAOfficial/',
    __v: 0 },
  { balance: 0,
    _id: 5ea22ae86407a43c389210bd,
    userid: 76561198053118460,
    profileurl: 'https://steamcommunity.com/id/WCAOfficial/',
    __v: 0 } ]

所以我不明白的第一件事是为什么 steam id 将最后一位数字四舍五入。现在我没有在此处包括实际用户,但我的一个用户的 ID 以 69 之类的结尾,并且由于某种原因四舍五入为 80。我一辈子都无法理解这一点。

下一期,好吧,所以忘记第一期。好吧,在某个地方,值会四舍五入或类似的东西。美好的。因此,如果我使用 find({userid: 76561198053118460}),我应该找回具有两个不同余额的两个用户,对吗?好吧,不,我不记得了。相反,我取回了我登录的那个,余额为 0 的那个。这个。老实说,这让我难以置信。这怎么可能对我来说没有意义。

所以我有两个问题。我想以免责声明结束这个问题。我已经玩猫鼬一段时间了,现在我认为自己是初学者。所以我真的希望这是一个问题,答案真的很明显,但如果是的话,很抱歉这个菜鸟问题。

谢谢!

如果您打开您最喜欢的浏览器控制台并在其中键入 76561198053118469,您将返回 76561198053118460。这是因为 76561198053118469 被解释为 as a floating-point number(在 javascript 中),因此存储不准确。

确保在操作用户 ID 的任何地方都使用字符串,并将 ID 存储为字符串,而不是数字。