javascript - 如何有效地从具有多个页面的巨大 api 中提取数据
问题描述
我目前正在使用 API 来创建 React Redux 应用程序。我的问题是我对如何有效地使用数据感到困惑,因为 API 有超过 14470 个“页面”可供导航。我的主要目标是根据键值对在 API 中显示某些项目。例如,我想在 API 中基于某个键值对(例如“highestRating”)显示一个类别,并希望通过 API 映射以找出具有最高评级的五个项目,我该怎么做这有效吗?
到目前为止,我尝试的是循环以获取整个 API 可供我使用,但随后我被手头的当前任务卡住了。
export const fetchHighestRating = () => async dispatch => {
let data = [];
let morePagesAvailable = true;
let currentPage = 0;
while (morePagesAvailable) {
currentPage++;
const response = await api.get(
`/api?page%5Blimit%5D=10&page%5Boffset%5D=${currentPage}`
);
data = [...data , response];
morePagesAvailable = currentPage < 17471;
}
dispatch({ type: FETCH_HIGHEST, payload: data });
};
解决方案
这不是javascript问题,而是数据库。您应该直接在数据库中运行查询以测试响应速度并决定下一步做什么,包括:
- 分片
- 索引
- 优化数据库配置
- ……
您正在使用的数据库类型的任何上述要求的研究,数据库的现状,所以现在没有确切的答案!
推荐阅读
- time-complexity - 此函数的时间复杂度(类似的答案但一个是错误的)
- c# - 用 C# 制作我的第一个计算器,但我被困住了
- session - 使用 JavaScript 处理自动注销重定向的最佳实践
- python - 程序冻结在创建一个大型 numpy 数组
- javascript - 如何在 useReducer 开关案例中正确测试 if-else 条件?
- javascript - 如何按位置过滤我的搜索结果以及如何重新呈现?
- python - Python API调用授权返回401请求库对JSESSIONID/Cookie/ClientID的检索失败
- powershell - 如何在 PowerShell 中运行多行代码?
- apache-spark - 从火花3中的字符串中删除空格
- node.js - Angular 10 警告:入口点“devextreme-angular..”包含对模块的深度导入