В серверном файле node js post запрос: (весь post не пишу он не к чему)
const count = {};
arrkor.forEach(element => {
count[element] = (count[element] || 0) + 1;
});
console.log(count);
// выдает допустим { '2':1 '5':4 } ключ id товара, второе значение кол-во.
let keys = Object.keys(count);
// проверили весь ли товар имеется на складе для покупки. 1 цикл
keys.forEach((key, index) => {
connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
let ostatok = row[0].count-count[key];
console.log(index+' остаток: '+ostatok);
if(ostatok<0){
response.send("Недостаточное кол-во товара. <a href='/'>Назад</a>");
}
});
});
// отправляем весь купленный товар в бд и завершаем удачную покупку. 2 цикл
for (let key in count) {
connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
let count2 = count[key];
let ostatok = row[0].count-count[key];
let nam = row[0].namet;
let cen = row[0].cenat;
let tovarimg = row[0].fotot;
let arrkor2 = tovarimg.split(',');
connect.query("UPDATE tovar SET count=? WHERE idt=?", [ostatok, key]);
connect.query("INSERT INTO money (idm,namem,avatarm,adressm,telm,tidm,timgm,tnamem,tcenam,tcountm,ostatok,datanow,timem) VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW(),?)", [polzid, nameuser, nameavatar, adress, tel, key, arrkor2[0], nam, cen, count2, ostatok, timem]);
response.send("Вы успешно совершили покупку. С вами свяжутся в ближайшее время. <a href='/'>Назад</a>");
});
}
Проблема в том что мне нужно проверить товар заказанный пользователем на наличие это первый цикл и если там ostatok >= 0 перейти ко второму циклу в котором я добавляю товар в бд и завершаю удачную покупку.
Пробовал через условия, также обернуть 1 цикл в функцию и через return вывести истину или ложь цикла, пробовал присвоить переменной 1 цикл, также пробовал изменить или создать новый объект с остатком товара, не получается из за соединения с бд в цикле, подскажите как можно реализовать мою задумку. Если не хватает хоть 1 товара завершить покупку неудачей, а если все норм перейти ко второму циклу.