Sequelize - gte и lte не возвращаются или равно правильно, если сумма является десятичной - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь работать с операторами Sequelize, но не получаю правильные результаты, содержащие десятичные дроби в запросе.

Определение Sequelize для суммы:

    amount: {
      type: Sequelize.FLOAT(20,2),
      allowNull: false
    },

Суммы я надеюсь получить 0,01 и 0,05, которые являются правильными для SQL DB. Вот запрос Sequelize:

   { userId: 1,
     date: { [Symbol(gte)]: '01-01-2020', [Symbol(lte)]: '02-29-2020' },
     deleted: false,
     amount: { [Symbol(gte)]: 0, [Symbol(lte)]: 0.05 } },
  include:
   [ { model: incomecategory, attributes: [Array] },
     { model: incomeaccount, attributes: [Array] } ],
  order:
   [ [ 'categoryId', 'asc' ],
     [ 'accountId', 'asc' ],
     [ 'amount', 'desc' ],
     [ 'date', 'asc' ] ] }

Это, в свою очередь, выглядит как SQL запрос на сервере Node:

SELECT `income`.`id`, `income`.`amount`, `income`.`accountId`, `income`.`categoryId`, `income`.`comment`, `income`.`date`, `income`.`deleted`, `income`.`createdAt`, `income`.`updatedAt`, `income`.`userId`, `incomecategory`.`id` AS `incomecategory.id`, `incomecategory`.`name` AS `incomecategory.name`, `incomeaccount`.`id` AS `incomeaccount.id`, `incomeaccount`.`name` AS `incomeaccount.name` FROM `incomes` AS `income` LEFT OUTER JOIN `incomecategories` AS `incomecategory` ON `income`.`categoryId` = `incomecategory`.`id` LEFT OUTER JOIN `incomeaccounts` AS `incomeaccount` ON `income`.`accountId` = `incomeaccount`.`id` WHERE `income`.`userId` = 1 AND (`income`.`date` >= '01-01-2020' AND `income`.`date` <= '02-29-2020') AND `income`.`deleted` = false AND (`income`.`amount` >= '0' AND `income`.`amount` <= '0.05') ORDER BY `income`.`categoryId` ASC, `income`.`accountId` ASC, `income`.`amount` DESC, `income`.`date` ASC;

Приведенное выше возвращает только 0,01, но когда я добавляю 0,001 до 0,05, что делает его 0,051, затем он находит его:

{ where:
   { userId: 1,
     date: { [Symbol(gte)]: '01-01-2020', [Symbol(lte)]: '02-29-2020' },
     deleted: false,
     amount: { [Symbol(gte)]: 0, [Symbol(lte)]: 0.051000000000000004 } },
  include:
   [ { model: incomecategory, attributes: [Array] },
     { model: incomeaccount, attributes: [Array] } ],
  order:
   [ [ 'categoryId', 'asc' ],
     [ 'accountId', 'asc' ],
     [ 'amount', 'desc' ],
     [ 'date', 'asc' ] ] }

Кто-нибудь знает, почему это происходит?

Заранее спасибо!

...