Я запрашиваю данные из базы данных MongoDB (MongoDB Driver 3.3). Некоторые значения хранятся в формате Decimal128. Проблема в том, что вместо числа возвращается следующий объект:

value: Decimal128 {
  _bsontype: 'Decimal128',
  bytes: <Buffer 80 7c 45 c7 c6 02 00 00 00 00 00 00 00 00 3e 30>
}

Я не нашел функции для преобразования этого объекта в удобочитаемое число (собственное 64-битное число JavaScript). Кто-нибудь знает, как этого добиться?

3
Simon 20 Дек 2019 в 19:35

1 ответ

Лучший ответ

Вы сказали, что ответы на этот вопрос неприменимы, потому что вы "используете не мангуста, а родной драйвер". Должен признать, что я не разбирался в Mongoose или MongoDB. Поверьте, ответы на этот вопрос здесь не применимы.

Но их концепция работает. собственный драйвер Decimal128 также содержит toString, возвращающий строковую версию числа (хотя в документации это не ясно) , которое можно преобразовать в число с помощью любым обычным способом. Очевидно, что преобразование будет с потерями (что неизбежно), но я предполагаю, что вы это знаете.

Предположим, что dec содержит число:

const num = +dec.toString(); // Unavoidably, this is a lossy conversion
2
T.J. Crowder 20 Дек 2019 в 17:24