featherjs处理非数据相关操作和子对象的方式是什么?

问题描述:

我刚刚发现了feathersjs,并且非常喜欢它背后的想法,尽管我仍然不确定基于服务的理念如何适用于比简单的CRUD UI更复杂的应用程序。featherjs处理非数据相关操作和子对象的方式是什么?

为了更好地理解它,我举了一个例子:考虑一个可以创建和分享调查的应用程序。您可以轻松管理创建调查服务来创建,更新和获取调查的属性(即问题和答案)。但是,如何处理以下几个方面:

1)有动作,即根本不影响数据的服务调用。一种行动可能是向尚未参与调查的所有受邀用户发送提醒电子邮件。如果不使用羽毛,我会为此创建一个专门的快速终点,但这些动作如何符合羽毛哲学?是否应该为每个操作创建一个服务(仅实现一个HTTP动词)?这会很快引起混淆。使用挂钩检测虚拟域上的更新并触发该操作?很难记录和混淆。

2)想象一下,用户可以给调查添加评论。这些评论将成为调查模型的一部分(我会为此使用MongoDB,因此请考虑每个调查对象有一个注释数组)。客户网络将调用GET /survey/123方法的调查服务这将返回其他属性(问题,答案,..)中的评论。但是如何添加评论?我应该为它使用一项专门的服务吗,或者这将如何适应调查服务?这样的请求将如何?

从羽毛松弛信道:https://feathersjs.slack.com/messages/C0HJE6A65/

发送电子邮件是在一个钩细。对于动作,您可以使用某个action属性进行修补,然后使用挂钩确定应执行哪个动作等。另一种方法是实现仅create的简单小型服务。对于评论,我可能会有一个commentssurvey-comments服务,然后您的survey/123可以填充评论。或者网络可以打2个电话,一个去取得调查结果,另一个取得评论。

+0

新的社区提供的挂钩可能有助于通过数据库调用发送该电子邮件异步。 https://github.com/feathersjs/feathers-community-hooks/blob/master/src/run-parallel.js – JohnSz

+0

感谢您的+50! – JohnSz