@ngrx和API,如何识别结果差异?

时间:2018-07-31 12:41:15

标签: angular laravel api state 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 ['activity_categories'])。

那么,有什么聪明的方法可以解决这个问题吗? :)

1 个答案:

答案 0 :(得分:1)

对此有两种可能的解决方案。最简单的方法是忽略以下事实:它们是“相同”数据,而是将两组不同的活动数据存储为完全独立的事物,其中一组是丰富的,另一组不是。

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

您可能需要在状态中存储一个标志(例如“ activitiesEnrichedWithCategories”)以控制是否需要执行该调用。如果基本活动不存在,那么您将需要同时进行两次调用以获取丰富的数据或改为调用/api/su/activitycategories/端点。

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