首页 > 解决方案 > 如果需要从各种分页端点或来源收集数据,则对分页数据进行聚合、过滤和排序

问题描述

我会尽量以一种通用的方式来解决这个问题,因为我需要一个相当通用的策略来解决它。

我遇到的问题是我有一系列正确分页的端点,但是用户需要跨这三个端点查看该数据的页面,并通过适当的过滤器排序和标准聚合在一个页面上。现在解决此问题的方法是对所有页面进行详尽的获取,并在将所有资源放入单个列表后使用客户端分页。这通常很容易,但如果大部分数据都在第一页上,我希望减少 90% 的时间拉入的数据量。

例如,我对端点 /A、/B、/C 进行了分页,并且我想获取第一页的数据。第一个和最后一个的简单场景当然是获取每个页面的第一页,看看第一页计数是否是我需要的项目总数,然后只进行客户端排序。问题是当我前进几页时,如果不以某种方式与现有页面数据的客户端存储进行协调,我就无法真正获得所获取内容的正确状态。

我的第一直觉是,在第一页上,我只是根据计数继续从端点获取,当我获得足够的页面时,我将其存储起来,并跟踪我在聚合页面。因此,如果我想要按特定条件包含 10 个项目的页面,我会调用具有相同条件的那些端点,/A 端点给我第 1 页以制作 5 个项目,/B 给我 2 个项目,而 /C 给我用 5 页来制作项目,我将它们交付给客户,跟踪每个页面的页码和数据,对第一页的聚合数据进行正确的排序,为下一页调用保留剩余部分。

所以基本上第一页是一个简单的调用,之后的任何调用都只是按顺序构建数据,而如果用户只想获取 X 页,则必须对第 1 页进行详尽的构建- X。

有没有更直观的东西,或者简单的详尽聚合是在客户端和服务之间协调的最简单方法?

标签: javascriptalgorithm

解决方案


推荐阅读