用于在NodeJS API中管理文档工作流的框架?

时间:2018-12-17 21:30:12

标签: node.js mongodb express mongoose workflow

我正在Node和MongoDB中制作一个API。目前,我正在使用Express和Mongoose。

为便于说明,我们假设它很简单(但并非如此),并且仅由一个称为事件的集合四个用户角色组成:

  1. events-manager-创建并编辑事件
  2. venue-manager-批准事件并将其发布到网站的公共部分
  3. guest-访问场地的网站并观看事件
  4. site-admin-具有所有角色并解决所有错误

我希望每个事件都处于三个州之一:

  1. draft(正在准备的事件),
  2. public-活动事件对场地访问者可见
  3. cancelled-已取消的活动,但仍在可见状态以告知公众取消的情况

我正在寻找可扩展的方法,框架或API设计,以解决以下问题:

1)通知客户哪些过渡可用,并根据过渡的可用性过滤文档(例如,显示要批准的事件)并防止无效操作

当然,业务逻辑从不容易,并且您不能从流程的逻辑从状态draft转到状态cancelled。我需要在传出文档(在这种情况下为事件)中附带有关可能的过渡的元数据。

但这将意味着放置逻辑树时间-保护无效过渡的路由,过滤具有可用过渡的文档(例如,具有可用发布操作的事件必须具有state:draft),并将可能的过渡置于另一个查询列出的文档。

2)告知客户端由于基于角色的访问控制,哪些CRUD终结点(和过渡)可供用户使用,并防止访问被禁止的终结点。

我们的用户应该知道是否可以进行某些过渡,即使他或她未获批准进行该过渡也是如此。检查此点与上一点类似,我必须保护路由并检查传出的文档。

3)保持业务逻辑与客户端分离

两次写入逻辑,一次用于文档流程演示,一次用于检查用户是否希望执行所需的操作,这会导致错误。客户端必须从服务器获取有关可能的后续步骤的信息(即HATEOAS API可发现性)

4)重用代码,保持他人可维护的代码

为解决问题1-3,我上下上下搜索了Internet(尤其是StackOverflow),在尝试过程中,我基本上只写了自己的框架的一半,但是除非我之后,否则其他人都无法维护我提供了详细的文档和多年的支持。

我仍然不相信这不是每个其他开发人员都面临的问题,也不是没有简单解决方案的问题。希望有人在这里:)

0 个答案:

没有答案