Как проверить, больше ли значение, полученное от Postgres BIGINT, чем Number.MAX_SAFE_INTEGER? - PullRequest
0 голосов
/ 06 июня 2019

Javascript в настоящее время не поддерживает тип BIGINT от Postgres. Многие компенсируют это, анализируя BIGINT из баз данных в виде строки. Это нормально, но я пытаюсь найти реализацию, в которой я буду анализировать целое число, если оно меньше или равно Number.MAX_SAFE_INTEGER, в противном случае возвращает ноль.

Как мне это сделать?

Я использую https://node -postgres.com /

У меня есть одна реализация, использующая Number.isSafeInteger (), но я не уверен, что она точна при всех возможных значениях. Мне не хватает понимания функций parseInt () и Number.isSafeInteger (), чтобы понять, сработает ли это.

val передается как строка типа.

MAX_SAFE_INTEGER показано ниже.

> Number.MAX_SAFE_INTEGER;
9007199254740991

Следующее представляется точным.

> Number.isSafeInteger(parseInt('9007199254740993'));
false

Это текущая реализация.

types.setTypeParser(20, (val) => {
  const intVal = parseInt(val);
  if (Number.isSafeInteger(intVal)) return intVal;
  return null;
});
...