Как вызвать события на основе отметки времени из базы данных - mongodb - PullRequest
1 голос
/ 31 января 2020

У меня приложение angular на внешнем интерфейсе и express js на внутреннем. Мне нужно предоставить notifications на передней панели на основе собраний, запланированных на определенное время.

Пример:

Если встреча запланирована сегодня в 12:00, мне нужно показывать уведомление на внешнем интерфейсе с уведомлением о встрече в зависимости от отметки времени, хранящейся в базе данных (пн go дБ).

Любой маленький совет по логике c очень ценится.

1 Ответ

1 голос
/ 31 января 2020

Возможное решение может быть следующим:

Первый шаг: задача cron

Вы создаете задачу CRON (https://scotch.io/tutorials/nodejs-cron-jobs-by-examples), которая будет проверять каждую минуту на например, если отметка времени собрания прошла или если в следующую минуту будет собрание (этот тип запроса: SELECT * FROM meeting WHERE notified = false AND (now() > meeting_time OR now() + 1m > meeting_time) - этот запрос недействителен SQL, это просто, например, * ). Для каждого из выбранных собраний вы добавляете новый объект в коллекцию notification вместе с информацией об уведомлениях и помечаете каждое уведомленное meeting, например, notified=true, чтобы избежать извлечения уже уведомленных собраний.

Второй шаг: посмотреть изменения

Затем вы можете просто использовать функцию watch() mongodb (https://docs.mongodb.com/manual/reference/method/db.collection.watch/), чтобы прослушать ваши изменения в notification и уведомить ваш фронт, когда есть новое уведомление. Вот пример с Server Send Event (SSE) и mongodb watch: https://ryantravitz.com/2018-11-29-server-sent-events/

См. Также

Вы также можете использовать сторонние сервисы для хранения таких уведомлений, как https://pusher.com/ или пожарная база (https://angularfirebase.com/lessons/send-push-notifications-in-angular-with-firebase-cloud-messaging/). Тот же принцип, но вместо того, чтобы хранить уведомление в mongodb, вы отправляете его этим службам и подключаете свой фронт к конечным точкам, предоставляемым этими службами.

...