Size: a a a

Node.js — русскоговорящее сообщество

2020 February 23

LN

Long Nguen in Node.js — русскоговорящее сообщество
ребят я нашел проблемку только теперь просьба помогите как обойти такую проблему ,
юзер имеет баланс 100 руб , поставил ставку 30 руб и вторую ставку 20 руб , я делаю фореч, внутри селкт его баланса , и делаю так 100-30 и для второй ставки 100-20 ,
собственно пробелма возникает в том что записи делаются на отбалды в любом порядке и самое главное что обновление баланса будет по одной из ставок т.е. итоговый баланс останется либо 100-20 либо 100-30
источник

LN

Long Nguen in Node.js — русскоговорящее сообщество
а вот так чтобы система сначала записала 100-20 а только потом сделала селект получив 80 отминусовала 30
источник

GG

Gabriel Grey in Node.js — русскоговорящее сообщество
Денис
А какой размер у массива был?
Все ок вроде
источник

GG

Gabriel Grey in Node.js — русскоговорящее сообщество
Long Nguen
а вот так чтобы система сначала записала 100-20 а только потом сделала селект получив 80 отминусовала 30
Ты же понимаешь что никто тут не поймет что такое фореч, кто именно записал и сделал селект, куда он это сделал и в какой момент, где юзер имеет баланс тоже непонятно
источник

r

rink0 in Node.js — русскоговорящее сообщество
Gabriel Grey
Ты же понимаешь что никто тут не поймет что такое фореч, кто именно записал и сделал селект, куда он это сделал и в какой момент, где юзер имеет баланс тоже непонятно
Фореч - forEach
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Long Nguen
ребят я нашел проблемку только теперь просьба помогите как обойти такую проблему ,
юзер имеет баланс 100 руб , поставил ставку 30 руб и вторую ставку 20 руб , я делаю фореч, внутри селкт его баланса , и делаю так 100-30 и для второй ставки 100-20 ,
собственно пробелма возникает в том что записи делаются на отбалды в любом порядке и самое главное что обновление баланса будет по одной из ставок т.е. итоговый баланс останется либо 100-20 либо 100-30
Добавить where к запросу на обновление и проверять результат
источник

Д

Денис in Node.js — русскоговорящее сообщество
Long Nguen
ребят я нашел проблемку только теперь просьба помогите как обойти такую проблему ,
юзер имеет баланс 100 руб , поставил ставку 30 руб и вторую ставку 20 руб , я делаю фореч, внутри селкт его баланса , и делаю так 100-30 и для второй ставки 100-20 ,
собственно пробелма возникает в том что записи делаются на отбалды в любом порядке и самое главное что обновление баланса будет по одной из ставок т.е. итоговый баланс останется либо 100-20 либо 100-30
чет не очень понял - "записи делаются от балды"
источник

Д

Денис in Node.js — русскоговорящее сообщество
Long Nguen
а вот так чтобы система сначала записала 100-20 а только потом сделала селект получив 80 отминусовала 30
у тебя каждая транзакция с балансом должна быть атомарной
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Денис
у тебя каждая транзакция с балансом должна быть атомарной
Как это поможет?
источник

Д

Денис in Node.js — русскоговорящее сообщество
Sergey 🛸
Как это поможет?
я собственно не очень то и понял твою логику из описания) я тебе лишь написал, что как минимум должна быть атомарность. Но собственно выше тебе написали один из вариантов
источник

LN

Long Nguen in Node.js — русскоговорящее сообщество
Денис
чет не очень понял - "записи делаются от балды"
источник

Д

Денис in Node.js — русскоговорящее сообщество
Sergey 🛸
Как это поможет?
т.е. если к тебе на бэке приходит массив ставок с суммами, ты делаешь инсерты и проверяешь после всех этих инсертов, что итоговый баланс >=0 иначе возвращаешь ошибку, что нет на балансе столько
источник

Д

Денис in Node.js — русскоговорящее сообщество
естественно завернув это все в транзакцию (это вот самый простой способ по сути)
источник

Д

Денис in Node.js — русскоговорящее сообщество
зачем у тебя в данных передается баланс, не понял, а если я пришлю что у меня баланс 100500?
источник

ИК

Игорь Корнелли in Node.js — русскоговорящее сообщество
вообще это последовательно должно выполняться, видимо у тебя просто результата еще нет первого, такие вещи с оплатой имеет смысл делать основываясь на времени и не пускать транзакцию раньше, чем предыдущая сработает, но вообще надо довольно точно определять вплоть по тысячных секунды, гугл какой-нибудь вообще в бигдата эзает атомные часы
источник

Д

Денис in Node.js — русскоговорящее сообщество
Денис
зачем у тебя в данных передается баланс, не понял, а если я пришлю что у меня баланс 100500?
в общем не суть, попробуй такой алгоритм
источник

LN

Long Nguen in Node.js — русскоговорящее сообщество
Денис
зачем у тебя в данных передается баланс, не понял, а если я пришлю что у меня баланс 100500?
нет баланс я беру из базы, как мне баланс апдейтить на лету , у чела есть столькото мне надо забрать сколько дано
источник

LN

Long Nguen in Node.js — русскоговорящее сообщество
Игорь Корнелли
вообще это последовательно должно выполняться, видимо у тебя просто результата еще нет первого, такие вещи с оплатой имеет смысл делать основываясь на времени и не пускать транзакцию раньше, чем предыдущая сработает, но вообще надо довольно точно определять вплоть по тысячных секунды, гугл какой-нибудь вообще в бигдата эзает атомные часы
я вот и спрашиваю подсказать как создать последовательные обработки
источник

ИК

Игорь Корнелли in Node.js — русскоговорящее сообщество
Long Nguen
я вот и спрашиваю подсказать как создать последовательные обработки
что за база?
источник

LN

Long Nguen in Node.js — русскоговорящее сообщество
обычная мискуль
источник