MongoDB灵活的邮件通知条件

Posted

技术标签:

【中文标题】MongoDB灵活的邮件通知条件【英文标题】:Mongodb flexible email notification conditions 【发布时间】:2017-08-22 01:38:51 【问题描述】:

我正在寻找一种方法将条件存储在 mongodb 中,以进行查询和检查,然后根据条件检查执行某些操作。

首先是我正在考虑的事件对象的示例


  "name": "My Event",
  "created": 1490726092221,
  "startDate": 1490726092221,
  "endDate": 1490726097810,
  "notifications": [
    
      "message": "event.Name Created", // message template
      "status": 0, // 0=initialized 1=failed 2=sent
      "sendDate": null, // date that the notification was sent
      "sentTo": ["c2a34dfg32c1d4583e73a123"] //members to send notification to
      "criteria": 
        "script": "event.created >= 0 && this.status < 2"
      
    
  ],
  "members": [
    
      "_id": "c2a34dfg32c1d4583e73a123" // Reference to the user
    
  ]

用例,我想为事件定制通知。因此,如果安排了一个事件,它可能会通知它何时创建、事件开始日期在几天内、成员加入时等。虽然我可以将所有这些编码到 javascript 函数中并通过枚举与它们对应对于通知标准,或者在某些事件发生时有挂钩,这似乎是一种严格的方法。

我所设想的可能是一种脚本语言,它可以作为字符串存储在文档上,可以查询和评估,这将返回一个布尔值来触发或不触发通知。

脚本需要将事件作为输入变量,以及一些可供脚本使用的特殊输入变量。

这可以使用 javascript 和 eval() 来完成,但这让我很害怕。是否有任何其他工具可用于此用例?或者,有什么建议可以更好地解决这个问题吗?

【问题讨论】:

您可以将js脚本的名称存储在您的文档中,您可以在检索文档时使用参数(甚至文档自己的字段)调用它,条件: script:“someScript.js”喜欢require("/../notification-scripts/" + doc.criteria.script)() 这是一个不错的主意。不过,它仍然需要硬编码脚本。我的目标是拥有一组用户创建的通知。这很难安全地做到,我最终可能会放弃 【参考方案1】:

听起来您正在构建一个带有 MongoDB 后端的工作流引擎。我将首先研究此答案中列出的内容Workflow engine in Javascript

【讨论】:

您能否更深入地了解如何在我的用例中使用工作流引擎? 您确实需要阅读工作流引擎并很好地理解它们。如果你这样做了,你就不会问这个问题了。所以我能做的就是重申,详细阅读工作流引擎,这样你就不会在不知道***存在的情况下重新发明***。我不喜欢仅仅因为您不愿意谷歌“工作流引擎”而浪费我的时间在另一个问题上。所以我不赞成你的问题。 你的整个评论都是浪费时间。我已经对其进行了研究,并在我的课程中深入了解了 FSM。我已阅读有关工作流引擎的信息,但我不了解与我的应用程序的连接,因此我问了一个后续问题以帮助指导我更多。我不怀疑您的建议是否适用,但经过一番研究,我只是不明白。在粗鲁地回复评论之前,请不要假设我做了什么。我可能还是不明白,这正是这个网站的用途。无论如何,感谢您的回答和 cmets。

以上是关于MongoDB灵活的邮件通知条件的主要内容,如果未能解决你的问题,请参考以下文章

jenkins邮件通知插件

NodeJS 和 MongoDB:在文档插入时向多个用户发送电子邮件和仪表板通知 [关闭]

使用C#轻松发邮件:HY.Mail一款简单易用灵活的邮件工具库

[Zabbix] 怎样实现邮件报警通知以及免费短信报警通知

如何在zabbix中限制报警邮件的次数

我可以将堆栈驱动程序标签指标放在电子邮件通知中吗?