【问题标题】:Duplicate mongodb objects params but only one gets shown? Last digits get rounded?重复的mongodb对象参数但只显示一个?最后一位数字四舍五入?
【发布时间】:2020-08-07 11:34:48
【问题描述】:

所以我的数据库遇到了一些奇怪的问题。当我登录后注意到我的余额与以前不同时,它就开始了。然后我发现两个明显不同的帐户具有相同的编号。无论如何。我正在使用护照,策略是蒸汽。下面以编码形式来看看我的两个问题:

第一个怪事: *当使用 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 } ]

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

下一期,好吧,忘记第一期了。好吧,在某个地方,值会四舍五入或其他什么。美好的。所以如果我使用 find( {userid: 76561198053118460}) 我应该用两个不同的余额取回两个用户,对吧?好吧,不,我不回来了。相反,我取回了我登录的那个,余额为 0 的那个。这。老实说,这让我大吃一惊。这怎么可能对我来说没有意义。

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

谢谢!

【问题讨论】:

    标签: node.js mongodb mongoose passport.js steam


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。看起来这是一个菜鸟问题 XD,但是,嘿,我们都从某个地方开始。一定会记住这个错误的:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2012-03-28
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多