У меня проблема с NodeJS.
Когда я пытаюсь опубликовать / обновить
One balance
One account
- сообщение от
Two different users
at the same time.
Пример:
![example of t_account table](https://i.stack.imgur.com/ucFfe.png)
У меня есть API с ExpressJS для отправки данных в таблицу t_account
следующим образом.
Мне нужно сначала получить последний баланс из max(id)
после каждой транзакции.
Я пытаюсь получить баланс 400 NOT
300
Например:
- Начальный баланс = 100
- 1-й новый пост = 100, => баланс = 200
- 2-й новый пост = 200, => баланс = 400
Пример кода:
router.post('/saveBalance',async function (req, res) {
try {
let SQL="SELECT balance FROM t_account WHERE id=(SELECT max(id) FROM t_account WHERE no='"+req.body.no+"')";
let queryResult=await db.myexec(SQL);
let newBalance=queryResult[0].balance+req.body.balance;
let SQL2="INSERT INTO t_account(no,balance) VALUES('"+req.body.no+"',"+newBalance+")";
let queryResult2=await db.myexec(SQL2);
res.status(200).json( {
error:"false",
code:"00",
message:"Balance Bank is saved",
})
} catch (error) {
res.status(400).json( {
error:"true",
code:"03",
message:"Balance Bank failed to saved",
})
}})
Проблема в том, что когда два пользователя публикуют данные одновременно, я получаю неправильный баланс.
Пример кода инициализации моих транзакций:
const axios = require('axios');
axios.post('http://localhost:3000/rbank/saveBalance/',
{
"no":"11",
"balance":100
}
)
axios.post('http://localhost:3000/rbank/saveBalance/',
{
"no":"11",
"balance":200
}
)
MySQL
Журналы консоли
![enter image description here](https://i.stack.imgur.com/pPqRJ.png)
Последний баланс неверен, показывая 300 вместо 400.
Что здесь не так?