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

what's the featherjs way to handle non-data related actions and child objects?

我刚刚发现 feathersjs 并且非常喜欢它背后的想法,尽管我仍然不确定基于服务的理念如何适用于比简单的 CRUD 更复杂的应用程序 UI.

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

1) 有 操作 ,即根本不影响数据的服务调用。一项操作可能是向所有尚未参与调查的受邀用户发送提醒电子邮件。如果不使用 feathers 我会为此创建一个专用的 express 端点,但是这些操作如何符合 feathers 哲学?每个动作是否应该创建一个服务(只实现一个 HTTP 动词)?这很快就会变得混乱。使用 hooks 来检测虚拟字段的更新并触发操作?难以记录且令人困惑。

2) 假设用户可以在调查中添加评论。评论将成为调查模型的一部分(为此我将使用 MongoDB,因此请考虑每个调查对象都有一个 comments 数组)。客户端 Web 将在 调查服务 上调用 GET /survey/123 方法,该方法将 return 其他属性(问题、答案等)中的评论。但是添加评论呢?我应该为它使用专门的服务吗,或者它如何适应 survey 服务?这样的请求会是什么样子?

来自 Feathers slack 频道:https://feathersjs.slack.com/messages/C0HJE6A65/

发邮件没问题。对于操作,您可以使用某个 action 属性打补丁,然后使用挂钩来确定应该执行哪个操作,等等。另一种方法是一个简单的小型服务,它只实现了 create。对于评论,我可能会有 commentssurvey-comments 服务,然后您的 survey/123 可以填充评论。或者网络可以进行 2 次调用,一次获取调查,另一个获取评论。