2

我在 Node.js 服务器中运行 Express,它作为我的 React 前端应用程序的后端。

前端应用程序通过 REST 调用从后端(存储在 Mongo 中)获取数据,并将这些数据显示在表格中。数据量每天都在增长,所以我认为我应该考虑减少传输到前端应用程序的数据量,以避免对后端造成不必要的压力。

我不确定这是否是解决此问题的正确方法,但我一直在想我会考虑让后端获取有限数量的条目,以便只有这些数据会显示在前端表中。

搜索出现问题 - 当用户想要搜索表中的数据时,我需要能够搜索所有条目,而不仅仅是加载到表中的数据。

我想一种选择是让搜索功能实际查询 REST API,而不是搜索表本身。

如果我走在正确的轨道上,我想我可以实现 REST API 分页,在https://refactoringfactory.wordpress.com/2012/09/08/pagination-in-node-js-and-中的示例中的某处快递/。欢迎提出其他关于如何实现分页的建议。

我非常希望对我所描述的方法提供一些意见,并建议以更智能的方式实现这一点。

编辑:我稍微更改了标题以包括“无限滚动分页”。这就是我想要实现的。目前我点击页面分页设置,但想将其替换为无限滚动分页。

4

2 回答 2

3

我一直在想我会考虑让后端获取有限数量的条目,以便只有这些数据会显示在前端表中。

根据我的经验,这是常见的做法。它的术语是“分页”。查看有关 REST API 中分页最佳实践的 SO 问题:API 分页最佳实践

搜索出现问题 - 当用户想要搜索表中的数据时,我需要能够搜索所有条目,而不仅仅是加载到表中的数据。

我想一种选择是让搜索功能实际查询 REST API,而不是搜索表本身。

再一次,你明白了。在客户端执行小型过滤器/搜索对于有限数量的条目来说是可以的,但是如果您首先只需要检索匹配搜索条件的项目,那么将该功能添加到您的 REST API 是正确的选择。

于 2017-08-24T17:41:20.453 回答
3

对,你应该这样做

  • 分页:您可以通过在列表的其余端点中公开 2 个参数来实现它

    • ?p=<number>: 页码,默认为 1
    • ?l=<number>:每页的项目数/页长,默认为可能从 10 到 100 的数字
  • 搜索:通过在列表的其余端点中公开 1 个参数来实现它

    • /?q=<string>:您可以定义为您想要的,可能是一个与数据的一个或多个字段匹配的字符串

如果你想最小化网络流量,你还可以添加一个参数来明确选择你想要返回的字段,像这样

  • /?f=<string>: 字符串可能类似于id,name,age,因此 api 应该只返回每条记录的这三个字段。

所有这些参数都应该被APIlist中的端点接受RESTful

例子:

http://example.com/api/cars/?p=2&l=15&q=toyota&f=id,brand,model,color

于 2017-08-24T17:44:55.363 回答