Создание функции atomi c в nodejs - PullRequest
0 голосов
/ 15 февраля 2020

Название не является точным, потому что, исходя из того, что я нашел в своем исследовании, кажется, не существует способа сделать функцию атома c в nodejs, но я изложу свою проблему, чтобы увидеть если вы, люди, можете придумать что-то, о чем я не смог придумать.

Я пытаюсь настроить планировщик, в котором я могу установить интервалы времени для моих встреч, скажем, по 1 часу каждый, и когда кто-то назначает встречу. Я хочу убедиться, что временной интервал не занят перед планированием.

Так, например, я решил, что буду работать с 9:00 до 14:00 с временным интервалом в один час. Тогда мой график будет 9-10, 10-11, 11-12, 12-1, 1-2.

Придет встреча с временем начала 11 и временем окончания 12. Мне нужно убедиться, что слот еще не занят.

Я использую mongodb с nodejs и обновляюсь.

Я понимаю, что в моей коллекции встреч я могу установить индекс для комбинации значений, таких как время начала и время окончания, как описано здесь Создание многопрофильных индексов в пн goose / MongoDB .

Но если я решу изменить свой временной интервал с 1 часа на 1,5 часа, у меня будут конфликты планирования, поскольку время начала и время окончания записей в базе данных не будут совпадать с новым интервалом

В настоящее время у меня есть функция, которая проверяет, что новое назначение не будет конфликтовать, но я не уверен, будет ли оно работать хорошо, когда я получаю несколько запросов. Это приложение nodejs и restify, так что в основном api с mongodb, с которым он разговаривает, чтобы назначать встречи.

Я запускаю его с несколькими работниками, поэтому я обеспокоен тем, что в определенный момент одновременно поступят два запроса, которые обрабатываются двумя разными работниками в течение одного временного интервала. Когда моя функция проверки конфликта будет выполнена, она вернется, сообщив, что слот открыт для них обоих, поскольку еще не назначено назначение, и тогда возникнет конфликт планирования.

Есть какие-нибудь идеи о том, как с этим бороться, или что-то мешает javascript, чтобы мне не пришлось об этом беспокоиться? Все отзывы будут оценены

Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2020

Я использовал https://github.com/Automattic/kue, чтобы поставить в очередь свои запросы, и добавил еще одну конечную точку, где вы можете проверить состояние вашего запроса. Поэтому, когда вы хотите назначить встречу, ваш запрос попадает в очередь заданий, и вы можете периодически проверять состояние вашего запроса. Таким образом, одновременно обрабатывается только один запрос на встречу, поэтому проблем с параллелизмом нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...