使用API的@ngrx,我如何识别结果的差异



我偶然遇到了一个问题,我觉得随着时间的推移,情况越来越糟。我遇到的问题是,API-调用可能会给出相同的结果,但具有略有不同的属性,我遇到了一个问题,即如何使用@ngrx实现这一点。

示例:

  • 我们有一个用户角色:system user
    • 未登录的用户使用/api/activities获取活动
    • System user使用/api/su/activities来获取活动
    • 两个API调用都返回活动,但其中一个调用也返回属性activity_categories
  • 在登录SU之前,他们使用/api/activities获取活动,结果存储在存储中
  • 然后SU登录,现在需要每个活动(activity_categories(的额外数据,并检查这些活动是否已经获取。如果是,则跳过API调用(/api/su/activities(
  • SU现在得到一个错误,因为每个活动都缺少它们的类别(活动['activity_categories'](

那么,有什么聪明的方法可以绕过这一点吗?:(

对此有两种可能的解决方案。最简单的方法是忽略这些数据是"相同"的事实,并将两组不同的活动数据(一组是丰富的,另一组不是(作为完全独立的东西存储在状态存储中。

另一种选择是重构API以提供一个只返回活动的额外类别数据的端点(例如/api/su/activitiycategories(,然后如果您已经在状态中有基本活动数据,则只调用第二个端点。然后,您可以使用额外的类别数据更新状态数据。

您可能需要在状态中存储一个标志(例如"activitiesEnrichedWithCategories"(,以控制是否需要执行该调用。在基本活动不存在的情况下,您需要同时执行两个调用以获取丰富的数据,或者调用/api/su/activitycategories/端点。

第二个选项的实现要复杂得多,但如果有很多活动,那么可能值得付出额外的努力。

最新更新