Проблема с одновременными запросами.
Имеется сервер на ноде, в качества транспорта используются вебсокеты.
Есть такой код:
let product = this.products.find(item => item.code == data.code);
if (product) {
product.count = data.count;
} else {
await this.pushProduct(data.code, data.count);
}
В pushProduct выполняется запрос к бд, функция async, запрос через await. Что-то типа такого (вырезаны обработчики ошибок):
const res = await models.product.getByCode(code);
res.count = count;
this.products.push(res);
Логика состоит в том, чтобы массив this.products содержал элементы с уникальным ключом code, т.е. они не должны дублироваться. Если есть элемент с данным кодом, то просто изменить его количество.
Так вот, если пульнуть сразу 5 запросов подряд, то добавятся 5 одинаковых элементов. Если эти запросы выполнять с интервалом в секунду - один элемент.
Как такую проблему решить/что читать? Спасибо!