对于 return 评分计数,graphql 解析器的首选数据结构是什么?

What would be the preferred data structure for a graphql resolver to return the counts of ratings?

查看:

Json 我 return 来自 graphql 字段解析器。 json 是 sql 查询的直接响应:

前端开发人员是这样说的:

我回复了:

我觉得这是过度工程的情况,根据视图需要转换和使用数据是视图的责任。我理解缓存计数以优化查询响应的需要,它与 arrray vs json 格式无关。前端开发人员不相信我的回答,认为这会导致性能问题,我无法理解,他让我从 Whosebug 社区征求意见。您对此的启发将不胜感激。也许我会从中学到一些东西。 :)

对于像这样的少量数据,从视图端渲染不是问题。根据我对对象和数组结构的看法,在这些场景中应该选择对象案例。因为目前评分是用星星显示的,如果将来它会转换成图表或其他类型的表示呢。

在这些情况下,双方都需要进行更改,因为您已将视图与服务器端逻辑紧密耦合。如果您使用对象,那将仅来自视图端,服务器将独立于视图。

不仅对象给你解耦环境,而且将来如果你想添加一些额外的信息,这对两个视图来说都很容易。目前它只是特定于数字,如果将来视图需要更多基于用户、区域等配置文件的信息,最终您将需要将其转换为这些结构。所以,如果你和对象一起去会更有成果。

从前端来看,如果你想优化你可以使用具有依赖关系的记忆功能或对象的规范化,这将有助于视图而不是进程 很多。

对于reducer函数将它们转换为数组的逻辑,它是一些过度操作,假设find方法进行线性扫描并且你的数据是这样排序的,find方法对于五个数据相当达到15(最好的情况)。您可以进行排序,它大致完成到 11,并且与普通数组相比,您可以获得更高的效率和可扩展性。因为大多数排序方法都接受自定义函数来排序。

任何更正或其他更多选项将不胜感激。