Дублирующиеся параметры объектов mongodb, но отображается только один? Последние цифры округляются? - PullRequest
0 голосов
/ 24 апреля 2020

Итак, я испытываю ряд странностей с моим БД. Это началось, когда я заметил после того, как вошел в систему, что мой баланс был не тот, что был раньше. Затем я нашел два явно разных аккаунта с одинаковым номером. В любом случае. Я работаю с паспортом, и стратегия - пара. Вот мои две проблемы в форме кодирования:

Первая странность: * При использовании Steam в качестве стратегии я получаю обратно пользователя с идентификатором Steam.

{ 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 последний раз округлил git. Теперь я не включил сюда реального пользователя, но у одного из моих пользователей идентификатор заканчивается примерно 69, а по некоторым причинам он округляется до 80. Я не могу это понять на всю жизнь.

Следующий выпуск, хорошо, так что забудьте о первом выпуске. Хорошо, где-то внизу значения округляются или что-то в этом роде. FINE. Так что, если я использую find ({userid: 76561198053118460}), я должен вернуть обоих пользователей с двумя разными балансами, верно? Ну, нет, я не получаю это обратно. Вместо этого я получаю обратно ту, в которую я вошел, ту, с нулевым балансом. Эта. Это уму непостижимо честно. Как это возможно, не имеет смысла для меня.

Итак, у меня есть две проблемы. Я хотел бы закончить этот вопрос с отказом от ответственности. Я какое-то время играл с mon goose и теперь считаю себя новичком. Поэтому я очень надеюсь, что проблема с ответом действительно очевидна, но если это так, извините за вопрос нуба.

Спасибо!

1 Ответ

1 голос
/ 24 апреля 2020

Если вы откроете консоль своего любимого браузера и наберете там 76561198053118469, вы вернетесь 76561198053118460. Это связано с тем, что 76561198053118469 интерпретируется как число с плавающей запятой (в javascript) и, следовательно, хранится неточно.

Убедитесь, что везде, где вы работаете с идентификаторами пользователей, которые вы используете строки и хранят идентификаторы как строки, а не числа.

...