Сохранение модели mongoose?

Добрый вечер! Помогите разобраться, как правильно сохранять модели через mongoose.

Пример:
Есть middleware авторизации пользователя из которого в request прокидывается mongoose userModel
Далее мы работаем с этой моделью, как с обычным объектом, в контроллере вызывается цепочка различных асинхронных сервисов и модель заполняется данными
В конце контроллера вызывается userModel.save()
Возвращаем ответ

Проблема:
userModel содержит счетчик count, кликов по кнопке. Пусть по умолчанию он будет 0.
С фронта прилетает несколько практически одновременных запросов, параллельно получаем из базы данные и создаем две userModel, у каждой счетчик 0.
Каждая делает инкремент userModel.count += 1 и сохраняет результат.
В результате получаем count === 1, из-за того, что в момент получения данных во втором запросе, первый еще не закончил работу и в базе все еще 0. Но пользователь совершил два действия и нужно, чтобы таких коллизий не было и счетчик был равен 2.

Я знаю про оператор $inc в монго, но поля могут быть не только в виде счетчиков.

Как правильно построить работу? Спасибо.
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Очереди
Ответ написан
Комментировать
Если вам это так важно - уверен, что стоит почитать про "транзакции в монго". Или, даже, перейти на SQL-базы данных, где они реализованы значительно комфортнее
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы