Node.js mongoose中的中间件与用于发送电子邮件/短信的副本集

Node.js mongoose中的中间件与用于发送电子邮件/短信的副本集,node.js,mongodb,Node.js,Mongodb,通过nodejs应用程序发送电子邮件、短信(用于账户验证)、通知等等,哪一种方法更好 据我所知,有两种方法 保存后执行一个函数,该函数将执行此操作。。。可以使用mongoose中间件,如保存后.. 借助mongodb中的副本集模拟触发器并通过后台作业运行触发器 我认为第二种方法更好,因为它将由其他进程在后台执行,但另一方面,node.js是异步的可能是node.js以智能的方式处理这类事情。。任何想法 简而言之:用户注册后发送短信邮件通知应该通过nodjs中间件或后台进程发送 据我所知,后台进程

通过
nodejs
应用程序发送电子邮件、短信(用于账户验证)、通知等等,哪一种方法更好

据我所知,有两种方法

  • 保存后执行一个函数,该函数将执行此操作。。。可以使用mongoose中间件,如保存后..

  • 借助mongodb中的副本集模拟触发器并通过后台作业运行触发器

  • 我认为第二种方法更好,因为它将由其他进程在后台执行,但另一方面,
    node.js
    异步的可能是
    node.js
    以智能的方式处理这类事情。。任何想法

    简而言之:用户注册后发送短信邮件通知应该通过
    nodjs
    中间件或后台进程发送
    据我所知,后台进程可以通过将侦听器绑定到
    oplog

    来执行。在mongoDB中保存文档后,触发sms/电子邮件服务请求的最佳方法是通过一些消息队列

    我建议使用。它将把发送sms/电子邮件的过程与您的req/res循环隔离开来。在save函数成功后调用它,它将以完全不同的过程添加到队列中。您可以简单地返回save函数的成功结果,而无需等待messageworker的响应

    消息传递队列还具有许多其他功能,如传递确认、可伸缩性选项、用于管理和监视所执行操作状态的API和GUI


    您可以在同一台服务器上进行设置,也可以根据流量在单独的服务器上进行部署。

    从MongoDB 3.6开始,您可以通过。它们是一个新的特性API,允许您根据数据库中发生的事件触发各种操作

    副本集与问题无关。要在保存后运行操作,请直接在节点中执行。如果您想在另一个进程中执行此操作,请构建另一个应用程序(#microservice),当您有邮件/短信/通知要发送时,只需通过HTTP请求新的应用程序。@Dafuck“复制”可能没有“直接”关系,但即使是“单一成员副本集”也会产生“副作用”实际上,存在一个keep,它本质上是每个写操作,所以您可以“监视”它并“触发”。我相信OP通过他们表达问题的方式意识到了这一点,但是你似乎没有意识到这一点。许多事情(尤其是meteor)都将此作为变更通知的方法,等等。评论中是否不清楚,如果不完全基于意见,这里的问题“太广泛”。在oplog中为跟踪通知编写“how to”远远超出了堆栈溢出的回答范围,任何响应都无法解释必要的过程。因此,我们不清楚你期望从合理的答案中得到什么样的答案。@neil Lunn:我想让短信发送或电子邮件发送保持在req/res循环之外。。。后台作业是减少总体req/res时间的更好方法,还是我应该使用mongoose中间件来做到这一点,我怀疑客户端何时会在插入查询(2)之后或在节点js中发送电子邮件验证之后得到成功创建的响应(1)