bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Sequelize численные тип возвращает как строку?

Использую PostgreSQL. Функция SUM("Statistics"."quantityPrinted") AS "quantityPrinted" возвращает строковое значение.

const response = await models.sequelize.query(
    `
    SELECT
      SUM("Statistics"."quantityPrinted") AS "quantityPrinted"
    FROM "Cartridges"
    left JOIN "Statistics" on "Statistics"."cartridgeId" = "Cartridges".id
    WHERE "Cartridges".id = 2
  `,
    { type: models.sequelize.QueryTypes.SELECT }
);


5d5bfca50b442990295256.jpeg

Изменял настройки, но работает только для MySQL.
dialectOptions: {
    supportBigNumbers: true,
    bigNumberStrings: false
  }


P.S. Реально у меня намного сложней запрос, который средствами ORM не построить.
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
bogdan_uman
@bogdan_uman Автор вопроса
шлЫмазл неукЪ-поцЪ
Решение нашел простое

const pg = require('pg');

// https://github.com/sequelize/sequelize/issues/4550
pg.defaults.parseInt8 = true;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@alekseyHunter
Студент. Охотник за знаниями.
"Модуль pg, используемый для sequelize, возвращает bigint как строку. Максимальное значение BIGINT равно 2 ^ 63-1, javascript может безопасно отображать до 2 ^ 53. Измените модель для использования целого числа (DataTypes.INTEGER)." @Google


Первый вариант: оставить как есть, применять конвертирование из строки в число.

Второй вариант: возвращать массив, который самостоятельно посчитаете.
Ответ написан
@vgbege
числа там большие ожидаются?
SELECT cast(SUM("Statistics"."quantityPrinted") as integer) AS "quantityPrinted" не прокатит?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 200 000 руб.
IQ Oрtiоn Software Санкт-Петербург
от 140 000 до 170 000 руб.
Взахлёб Ульяновск
от 90 000 до 120 000 руб.
23 сент. 2019, в 17:03
400 руб./в час
23 сент. 2019, в 16:45
3000 руб./за проект
23 сент. 2019, в 16:43
30000 руб./за проект