javascript - 如果需要从各种分页端点或来源收集数据,则对分页数据进行聚合、过滤和排序
问题描述
我会尽量以一种通用的方式来解决这个问题,因为我需要一个相当通用的策略来解决它。
我遇到的问题是我有一系列正确分页的端点,但是用户需要跨这三个端点查看该数据的页面,并通过适当的过滤器排序和标准聚合在一个页面上。现在解决此问题的方法是对所有页面进行详尽的获取,并在将所有资源放入单个列表后使用客户端分页。这通常很容易,但如果大部分数据都在第一页上,我希望减少 90% 的时间拉入的数据量。
例如,我对端点 /A、/B、/C 进行了分页,并且我想获取第一页的数据。第一个和最后一个的简单场景当然是获取每个页面的第一页,看看第一页计数是否是我需要的项目总数,然后只进行客户端排序。问题是当我前进几页时,如果不以某种方式与现有页面数据的客户端存储进行协调,我就无法真正获得所获取内容的正确状态。
我的第一直觉是,在第一页上,我只是根据计数继续从端点获取,当我获得足够的页面时,我将其存储起来,并跟踪我在聚合页面。因此,如果我想要按特定条件包含 10 个项目的页面,我会调用具有相同条件的那些端点,/A 端点给我第 1 页以制作 5 个项目,/B 给我 2 个项目,而 /C 给我用 5 页来制作项目,我将它们交付给客户,跟踪每个页面的页码和数据,对第一页的聚合数据进行正确的排序,为下一页调用保留剩余部分。
所以基本上第一页是一个简单的调用,之后的任何调用都只是按顺序构建数据,而如果用户只想获取 X 页,则必须对第 1 页进行详尽的构建- X。
有没有更直观的东西,或者简单的详尽聚合是在客户端和服务之间协调的最简单方法?
解决方案
推荐阅读
- java - Spring Application 不会在 MySQL/PostgreSQL 中创建表
- python - http://localhost:9200/_cat/indices?v 为空
- python - Python列表问题:只想获取数据并删除字段的标题
- javascript - 是否可以在 JEST 单元测试中将 event.isTrusted 设置为 true?
- java - 调用 MSSQL 存储过程时,Spring Boot Data @Transactional 不起作用
- amazon-web-services - Amazon ECS 任务,如何在 NodeJS 中获取公共 IP
- excel - 使用脚本字典后格式化文本
- spring-boot - 在“可执行 JAR”中包含和使用本机 lib 文件(.so、.dylib)
- go - 为什么 atomic.StoreUint32 优先于 sync.Once 中的正常分配?
- corda - 我可以将corda状态的部分字段暴露给同一网络中的另一个cordapp吗?