Previously this command worked very correctly, but in the last few days it has had an error of running over and over again 2-3 times, making the meaning of the balance update command incorrect.
await USER.findByIdAndUpdate(
{ _id: getBetUser[index].user._id },
{
money: Number(moneyuser.money) + Number(money_result),
totalwin: Number(moneyuser.totalwin) + Number(money_result),
}
);
full code:
cron.schedule(“0 */5 * * * *”, async () => {
try {
const Setting = await setting.find();
const getBetUser = await historyxucsac5p.find({ status_bet: “Pending” });
if (getBetUser.length != 0 && Setting.length > 0) {
for (let index = 0; index < getBetUser.length; index++) {
const date = new Date() - new Date(getBetUser[index].id_bet.createdAt);
if (date > 59000 * 5) {
let choose_user = getBetUser[index].state.split(" ");
let money_result = 0;
choose_user.map((item) => {
if (FuncActions.ResultXucSac(getBetUser[index].id_bet.result).includes(Number(item))) {
if (Number(item) < 9) {
money_result +=
(Number(getBetUser[index].money) / choose_user.length) *
Number(Setting[0].xucsac5p);
} else if (Number(item) > 9 && Number(item) < 99) {
money_result +=
(Number(getBetUser[index].money) / choose_user.length) *
Number(Setting[0].haitrung5);
} else if (Number(item) >= 111) {
money_result +=
(Number(getBetUser[index].money) / choose_user.length) *
Number(Setting[0].batrung5);
}
}
});
if (money_result > 0) {
await historyxucsac5p.findByIdAndUpdate(
{ _id: getBetUser[index]._id },
{ status_bet: "Win", moneythang: Number(money_result) }
);
const moneyuser = await USER.findById({
_id: getBetUser[index].user._id,
});
await USER.findByIdAndUpdate(
{ _id: getBetUser[index].user._id },
{
money: Number(moneyuser.money) + Number(money_result),
totalwin: Number(moneyuser.totalwin) + Number(money_result),
}
);
} else {
await historyxucsac5p.findByIdAndUpdate({ _id: getBetUser[index]._id }, { status_bet: "Lose" });
}
}
}
}
} catch (error) {
console.log(err);
}
});