首页 > 解决方案 > 如何有效地从具有多个页面的巨大 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 });
};

标签: javascriptreactjsapiredux

解决方案


这不是javascript问题,而是数据库。您应该直接在数据库中运行查询以测试响应速度并决定下一步做什么,包括:

  • 分片
  • 索引
  • 优化数据库配置
  • ……

您正在使用的数据库类型的任何上述要求的研究,数据库的现状,所以现在没有确切的答案!


推荐阅读