Size: a a a

NestJS — русскоязычное сообщество

2021 May 07

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
Ну поэтому совет хотел узнать)
источник

YK

Yurii Kovalenko in NestJS — русскоязычное сообщество
Ищи конкретно для монги, select for update
источник

YK

Yurii Kovalenko in NestJS — русскоязычное сообщество
Или поменяй на атомарный инкремент
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
И так atomic. Я о том что юзер может быстро кликать на кнопку и пока монго получает и меняет бд в первом запросе, второй получит неправильные данные с бд
источник

YK

Yurii Kovalenko in NestJS — русскоязычное сообщество
Значит не атомарно обновляешь)
источник

YK

Yurii Kovalenko in NestJS — русскоязычное сообщество
Если есть возможность влезть между селектом и апдейтом с новым селектом
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Так он не для локов
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
Ну я локи хотел точнее
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Можешь функии монги использовать $inc
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Вот тебе атомарный апдейт
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
Позднее покажу пример
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
вот пример. можно представить что через rest api идет вызов на insertUser(email). внутри проверяется есть ли юзер с этиим email или нет, через count. если нет добавляется. так вот если оба запроса будет параллельными, то пока первый проверяет и пишет данные в бд и пока еще не дописал, тем временем второй будет проверять , то второй получит count 0 и напишет в базе тоже. будет 2 юзера с таким же email. я понимаю что так не проверяют уникалность в монго, но это чисто пример где надо будет юзать lock.
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Уник индекс на email поможет
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
да не об этом я. конечно же поможет, но представим что юник индекса в монго нет. у меня в коде такие проблеммы с локами, когда прям надо замарозить участки кода, не одна операция. поэтомму я спрашиваю про локи и нест
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Тогда отвечу так, нест не решает проблему локов потому что не должен
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Тут берешь/пишешь решение для ноды без завязки на нест и работаешь с ним
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Но по факту тебе нужна некая очередь обработки команд
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Более конкретно на абстрактный вопрос не смогу ответить
источник

ス。

ステパンヤノ 。... in NestJS — русскоязычное сообщество
спасибо, я смотрю в сторону mutex, думал обертки будет на нест
источник

AK

Alex Kulagin 🏡 in NestJS — русскоязычное сообщество
Глянул сейчас что из мьютехов есть

https://www.npmjs.com/package/async-mutex
источник