209 похожих чатов

Всем привет, я храню цену в центах, использую sequelize Можно ли

сделать так, чтобы при отдаче модели на клиент цена автоматически переводилась в доллары (/ 100)? Или нужно везде следить за этим и переводить вручную?

13 ответов

9 просмотров

Надо написать на select

Павел- Автор вопроса
Dawut
Надо написать на select

не очень если честно понял, что за select?

Павел
не очень если честно понял, что за select?

Тебе надо переводить на доллары при методе find?

Павел- Автор вопроса
Dawut
Тебе надо переводить на доллары при методе find?

нет, ну не везде по крайней мере, т.е. например я могу взять строку с базы, работать с центами, а при отдаче ответа на клиент цена уже должна приходить в долларах

Павел- Автор вопроса
Dawut
Ну вот при запросе find умножай и все

ну даже если так, получается все равно при каждом разе придется это учитывать? я имею ввиду может есть какой-то способ один раз это прописать где-нибудь (возможно, чтобы при find появлялось автоматически доп. поле) и "забыть" об этом

Павел
ну даже если так, получается все равно при каждом ...

Давай начнём с базового. При операциях с плавающей точкой происходит потеря точности. Поэтому ты хранишь цену в целочисленных центах, что логично. Теперь по непонятной причине ты хочешь что бы база вместо нормального целочисленного цента возвращала тебе на бэк абсолютно непредназначенный для точных вычислений флоат. За такое на код ревью обычно бьют по рукам. Центы в доллары нужно конвертировать исключительно на фронте, на этапе отображения пользователю. В остальное время работа идёт только с центами

Павел- Автор вопроса
Ashish Cancelado
Давай начнём с базового. При операциях с плавающей...

Вообще-то я не говорил, что мне нужно, чтобы база отдавала в бэк флоат, а наоборот, чтобы база отдала центы (как и должно быть), я работал с центами, и только при отдаче данных на клиент отдавались баксы А насчет того, что правильнее конвертить цену на фронте - есть какое-то более подробное объяснение почему так?

Про операции с плавающей точкой и потерю точности осведомлен?

Павел- Автор вопроса
Ashish Cancelado
Про операции с плавающей точкой и потерю точности ...

Это я знаю, зачем на фронте вообще что-то делать с ценой, кроме как показывать ее пользователю?

Павел
Это я знаю, зачем на фронте вообще что-то делать с...

Берём банальный пример с корзиной интернет магазина. Пользователь накидал себе в корзину товаров, ещё и промокод на % скидки активировал вредитель. Фронт посчитал флоаты и отобразил одну сумму, а бэк насчитал другую. Расхождение естественно копеечное, но зачем на ровном месте создавать неконсистентность?

Павел- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Карта сайта