我正在Node和MongoDB中制作一个API。目前,我正在使用Express和Mongoose。
为便于说明,我们假设它很简单(但并非如此),并且仅由一个称为事件的集合和四个用户角色组成:
events-manager
-创建并编辑事件venue-manager
-批准事件并将其发布到网站的公共部分guest
-访问场地的网站并观看事件site-admin
-具有所有角色并解决所有错误我希望每个事件都处于三个州之一:
draft
(正在准备的事件),public
-活动事件对场地访问者可见cancelled
-已取消的活动,但仍在可见状态以告知公众取消的情况当然,业务逻辑从不容易,并且您不能从流程的逻辑从状态draft
转到状态cancelled
。我需要在传出文档(在这种情况下为事件)中附带有关可能的过渡的元数据。
但这将意味着放置逻辑树时间-保护无效过渡的路由,过滤具有可用过渡的文档(例如,具有可用发布操作的事件必须具有state:draft
),并将可能的过渡置于另一个查询列出的文档。
我们的用户应该知道是否可以进行某些过渡,即使他或她未获批准进行该过渡也是如此。检查此点与上一点类似,我必须保护路由并检查传出的文档。
两次写入逻辑,一次用于文档流程演示,一次用于检查用户是否希望执行所需的操作,这会导致错误。客户端必须从服务器获取有关可能的后续步骤的信息(即HATEOAS API可发现性)
为解决问题1-3,我上下上下搜索了Internet(尤其是StackOverflow),在尝试过程中,我基本上只写了自己的框架的一半,但是除非我之后,否则其他人都无法维护我提供了详细的文档和多年的支持。
我仍然不相信这不是每个其他开发人员都面临的问题,也不是没有简单解决方案的问题。希望有人在这里:)