Если вы используете connect-pg-simple для своей базы данных Node.js, вы могли столкнуться с небольшим неудобством: числа с плавающей запятой возвращаются в Node.js в виде строк, а не числовых значений. В остальном connect-pg-simple прекрасен, но это чертовски раздражает!

Что именно я имею в виду? Допустим, вы запускаете этот запрос:

SELECT
  name::TEXT,
  money::FLOAT,
  whatever::NUMERIC(2,8)
FROM my_table

Результатом connect-pg-simple является структура данных JavaScript, и вот как она будет выглядеть:

{
  "name": "John Doe,
  "money": "343.545942",
  "whatever": "232.44"
}

(И да, это еще одна статья, в которой я ни хрена не объясняю основы. Базовое руководство по connect-pg-simple см., ну, connect-pg-simple прямо здесь. Вы бы не столкнулись с этой проблемой, если бы не локоть в нее уже все равно…)

Конечно, вы можете преобразовать строку в числовое значение в JavaScript, так как вы, вероятно, уже используете отдельный сервис для обработки ваших материалов PostgreSQL. Но нет необходимости «вручную» исправлять результат после каждого вызова запроса. Вы можете просто обновить анализатор типов самого connect-pg-simple:

import { types } from 'pg';
types.setTypeParser(1700, x => parseFloat(x));

Парсер номер 1700 предназначен для типов с плавающей запятой. Здесь мы переопределяем его, чтобы использовать ванильную функцию JavaScript parseFloat(). Просто и легко! Теперь наши возвращаемые значения набираются правильно:

{
  "name": "John Doe,
  "money": 343.545942,
  "whatever": 232.44
}