Google Firebase Realtime Database setValue IF (condition) -


firebase database:

{   "balance" : 10 } 

application 1 (pseudocode):

if (balance-10 >= 0) {     // application freezes few seconds. (connection/hardware issue or whatever reason)     balance -= 10; } 

application 2 (pseudocode):

if (balance-10 >= 0) {     // application executed without problems.     balance -= 10; } 

if both applications start @ same time, final "balance" value "-10" instead of "0".

in mysql problem easy fixed by:

update `table` set balance=if(balance-10>=0, balance-10, balance);

what possible solutions firebase?

this handled through transactions. since don't specify technology i'm showing web code:

balanceref.transaction(function(current) {   if (current && current > 10) {     return current - 10;   }   return (current || 0); } 

if multiple applications run code @ same time, 1 of them transaction rejected , retry.

also see:


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -