Почему мангуст хранит мой номер как двойной - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь понять, почему, когда я сохраняю модель, содержащую customId как number (например, 61528564963650091), она сохраняет его как тип Double:

61528564963650091.0

Если число небольшое, создается Int32

. Чтобы решить мою проблему, я попытался использовать тип Long, но это было хуже ...

Пример схемы:

{
  customId: {
    type: Number,
    required: true,
  }
}

Если кто-то может подсказать мне это:)

1 Ответ

0 голосов
/ 07 июня 2018

Максимальное значение 32-разрядного целого числа составляет ~ 4 290 000 000, как вы можете видеть, вы действительно не можете соответствовать 61 528 564 963 650 091.

Дело не в монго, это всего лишь ограничение в 32 бита.

Double - это обычно 64-битная реализация (поэтому он называется double=2x32), что означает, что он позволяет гораздо большему числусохранитесь как предоставленный вами.


Если я посмотрю на новейшие документы по мангустам: http://mongoosejs.com/docs/schematypes.html похоже, что он не поддерживает "Long" (также имейте в виду, что Javascriptимеет только один тип - число - что является 64-битной плавающей точкой)


Но есть решение - вы можете использовать этот модуль: https://www.npmjs.com/package/mongoose-long

...