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;
});