如何在nodejs mongodb中实现SO上的通知系统?

时间:2017-11-14 11:15:56

标签: node.js mongodb notifications email-notifications

很抱歉,如果我的问题是抽象的,请让我解释一下我的问题。我有一个看起来像StackOverflow并建立在nodejs和mongodb上的论坛。有帖子和评论。我需要实现通知系统,该系统允许用户通知用户添加帖子的新答案,更改帖子内容,添加新评论。

我的问题是我之前从未实现此功能,所以现在我开始寻找最佳实践。我最感兴趣的是实现该系统的通用模式。特别需要什么样的通知集合模式?如何确定帖子的订阅者发送通知?以及其他可能存在于此类系统中的细微差别。

只是为了澄清我在Facebook上不需要实时通知,但在顶部需要通知列表(例如在SO中)以及通过电子邮件通知的能力。

请在互联网上提供有关此类系统的白皮书或有关如何从头开始实施此类系统的一些建议。

感谢。

3 个答案:

答案 0 :(得分:0)

查找websockets(即socket.io或faye)

答案 1 :(得分:0)

监听mongodb触发器,如果​​满足您的条件,则运行逻辑以获取用户的电子邮件并使用nodemailer发送电子邮件

答案 2 :(得分:0)

从v3.6版开始,MongoDB支持change streams,可让您订阅数据更改。

例如,当您在insert集合中收到comments事件时,可以触发诸如在notifications集合中插入新文档,发送电子邮件等操作。

您可以参考change events来查看MongoDB支持的事件列表以及最低版本。

或者,如果您使用猫鼬

您还可以使用提供“挂钩”的Mongoose middlewares,让您指定某些操作之前或之后的操作。

例如,您可以指定一个函数来处理在每个文档save操作之后运行的通知。