Как реализовать систему уведомлений, как на SO, в nodejs mongodb?

Извините, если мой вопрос абстрактен, но позвольте мне объяснить мою проблему. У меня есть форум, похожий на StackOverflow и построенный на nodejs и mongodb. Есть посты и комментарии. Мне нужно реализовать систему уведомлений, которая позволяет уведомлять пользователей о добавлении нового ответа на сообщение, изменении содержания сообщения, добавлении новых комментариев.

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

Просто чтобы уточнить, что мне не нужны уведомления в реальном времени, такие как в facebook, а список уведомлений вверху (например, в SO) и возможность уведомления по электронной почте.

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

Спасибо.


person Erik    schedule 14.11.2017    source источник


Ответы (3)


Найдите веб-сокеты (например, socket.io или faye)

person mjarraya    schedule 14.11.2017
comment
Просто чтобы уточнить, что мне не нужны уведомления в реальном времени, такие как в facebook, но список уведомлений вверху (как в SO) и возможность уведомления по электронной почте - person Erik; 14.11.2017

слушайте триггеры mongodb, и если ваши критерии соблюдены, запустите логику, чтобы получить электронную почту пользователя и использовать nodemailer для отправки электронной почты

person varaprasadh    schedule 15.06.2020
comment
Вы должны предоставить любые ограничения, предположения или упрощения в своем ответе. Подробнее о том, как ответить на этот вопрос, см. по этой ссылке: stackoverflow.com/help/how-to-answer - person Usama Abdulrehman; 16.06.2020

Начиная с версии 3.6, MongoDB поддерживает потоки изменений, которые позволяют подписаться на изменения данных.

Например, когда вы получаете событие insert в коллекции comments, вы можете инициировать такие действия, как вставка нового документа в коллекцию notifications, отправка электронной почты и т. д.

Вы можете обратиться к событиям изменений, чтобы увидеть список событий, которые поддерживает MongoDB. , вместе с минимальной версией.

В качестве альтернативы, если вы используете Mongoose

Вы также можете использовать Mongoose промежуточное ПО, которое предоставляет "крючки", которые позволяют указывать действия до или после определенных действий. операции.

Например, вы можете указать функцию, которая обрабатывает уведомления для запуска после каждой операции с документом save.

person thammada.ts    schedule 15.06.2020