如何从模块中获取所有记录 - SugarCRM版本7 +

时间:2018-06-13 13:15:20

标签: json sugarcrm

根据documentation,要查询记录,您必须使用此端点/<module>/:recordId,但如果我想获取给定模块的所有记录,该怎么办?我找不到任何相关的文档。

我尝试/<module>/filter设置json参数,如下所示:

{
    "max-num": "-1",
    "offset": "0",
    "order-by": "date-entered",
    "favorites": false,
    "my-items": false
}

但只返回20条记录?

当然,我尝试使用大量数字自定义"max-num",但仍会返回20条记录。

我需要帮助

1 个答案:

答案 0 :(得分:1)

该选项的名称为max_num(包含下划线字符),不是 max-num

但是,服务器端还有另一个限制,如果其值太高,将会否决max_num。 默认的服务器端最大限制为1000,但可以通过将$sugar_config['max_record_fetch_size']设置为所需的数字来增加配置。

如果您想确保获得所有记录,通常最好在响应中检查next_offset。 只要它不是-1,就会有比返回的更多的记录。 在这种情况下,您应该在请求中发送另一个next_offset的值为offset的请求,以获取记录的下一个“页面”。

备注

  • 我建议您在请求中指定一个fields数组,其中包含您需要的字段名称。否则,在检索大量记录时,最终可能会浪费大量时间/带宽/内存。
  • 设置$sugar_config['max_record_fetch_size']也会影响,例如在列表视图中使用“全选”可以记录多少条记录。

分页示例

在下面的示例中,我们将从服务器获取所有记录,每个请求的批量/页数为1000。对于此示例,我们假设服务器总共有2341条记录。

我们请求1000条记录,从偏移0开始,这是第一条可用的记录:

请求#1

{
    offset: 0,
    max_num: 1000
}

注意:如果未指定偏移量,则假定为0。

来自服务器的

响应#1

                             {
                                 next_offset: 1000,
                                 records: [array of 1000 records]
                             }

我们在 Response#1 中收到前1000条记录(偏移0到999),我们的第一条记录的偏移量为{{1在1000

中指定

因此我们再次请求1000条记录,从偏移1000处的记录开始:

请求#2

next_offset
来自服务器的

响应#2

{
    offset: 1000,
    max_num: 1000
}

我们在 Response#2 中收到了接下来的1000条记录(抵消1000到1999),我们的第一条记录的偏移量为{{1} } {在 { next_offset: 2000, records: [array of 1000 records] }

中指定

因此我们再次请求1000条记录,从偏移2000处的记录开始:

请求#3

2000
来自服务器的

响应#3

next_offset

Response#3 中,我们收到341条记录(抵消2000至2340)和{ offset: 2000, max_num: 1000 } { next_offset: -1, records: [array of 341 records] } ,表示没有更多记录。 这意味着我们现在已收到所有1000 + 1000 + 341 = 2341条记录。

结果概述:

next_offset