API邮件/通知系统的正确设计模式是什么?

时间:2015-02-03 18:57:04

标签: node.js mongodb email design-patterns email-integration

我正在使用节点js mongo express 作为技术开发 Rest API 。我的模型包括用户,场地等。此外,每个用户都有州。状态的示例可以是当用户注册第一个状态是“新用户”时,在一周之后状态必须是“first_week_user”。等等。

这些州的目的是根据用户的状态通知用户。例如,如果用户喜欢图片并且用户在第一周(他具有' first_week'状态),那么必须向他发送电子邮件。我现在处于设计阶段,所以我想知道是否有人不得不面对同样的问题。

我想到的设计是将 notification_profile 放在用户对象中并使用cron作业检查当天的状态和操作,并根据发送电子邮件/推送通知。

你怎么看?有更好的选择吗?例如我可以使用电子邮件API并将电子邮件排入此API。你知道我在哪里可以找到有关这个问题的设计模式的信息吗?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如果没有更多细节,这听起来像你需要Observer模式。

基本上,您的Email组件将订阅每个Person对象的like(photo photo)事件,并立即执行电子邮件发送作业,或安排作业稍后运行,作为一批。

答案 1 :(得分:0)

指定状态转换的一种方法是作为分层状态机。请参阅http://www.eventhelix.com/realtimemantra/hierarchicalstatemachine.htm#.VNJIflXF--ohttp://en.wikipedia.org/wiki/UML_state_machine

我没有一个好的node.js示例,但here's a C# implementation还包含定时事件的概念。本质上,状态机会跟踪NextTimedEventAt,因此您可以在适当的时间将其有效地从数据库中拉出来以触发基于时间的事件。

动作发生在状态转换上:当你进入状态或离开状态时。