Я денормализовал некоторые из данных, хранящихся в MongoDB, ради сокращения времени чтения. Это нужно обновлять, когда я выполняю операцию записи, чтобы он соответствовал базовым данным.Принудительный одиночный писатель базы данных в узле + Mongo
Чтобы избежать каких-либо условий гонки, я хочу, чтобы это было сделано в фоновом задании, которое было бы однопоточным. В Java я просто бросаю объекты Command в очередь и обрабатываю их по отдельности. Но в узле, всякий раз, когда я выполняю какую-либо операцию с БД, это произойдет асинхронно, и поэтому я остаюсь с проблемой состояния гонки.
Пример того, что я хочу сделать:
Применение темы
- Вставить новый "Bid"
- Поместите объект "BidPlaced" на очереди
фона Нить
- Pop "BidPlaced"
- Найти max (Цена) от всех торгов. Обновите Auction.highestBid.
Я все еще склоняюсь к модели параллелизма узла (в случае, если вы не могли сказать!). Как я могу добиться чего-то подобного в Node.js.
Я не понял вопрос хорошо, однако один способ выполнения вещи в определенном порядке использование узла - «выполнить» следующую задачу в обратном вызове предыдущей задачи. Поэтому, когда заканчивается первый асинхронный вызов, его обратный вызов вызывается, и вы можете запустить следующую «задачу» из этого обратного вызова. Я считаю, что другой способ - использовать EvenEmitters. Например, когда «ставка поставлена», вы выбрасываете событие. Также вы должны определить слушателя для этих событий, чтобы выполнить «Обновить Auction.highestBid». События автоматически помещаются в очередь, поэтому вам не нужно определять явную очередь – balafi