Я пытаюсь работать с операторами 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' ] ] }
Кто-нибудь знает, почему это происходит?
Заранее спасибо!