首页 > 解决方案 > 如何从模块中获取所有记录 - SugarCRM 版本 7+

问题描述

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

我试图/<module>/filter设置这样的 json 参数:

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

但只返回 20 条记录?

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

我需要帮助

标签: jsonsugarcrm

解决方案


选项的名称是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 条记录,从 offset 开始0,这是第一个可用的记录:

请求 #1

{
    offset: 0,
    max_num: 1000
}

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

来自服务器的响应 #1

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

我们在响应 #1中收到前 1000 条记录(偏移量 0 到 999),我们还没有的第一条记录的偏移1000next_offset

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

请求 #2

{
    offset: 1000,
    max_num: 1000
}

来自服务器的响应 #2

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

我们在响应 #2中收到接下来的 1000 条记录(偏移量 1000 到 1999),我们没有的第一条记录的偏移量2000next_offset

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

请求#3

{
    offset: 2000,
    max_num: 1000
}

来自服务器的响应 #3

                             {
                                 next_offset: -1,
                                 records: [array of 341 records]
                             }

响应 #3中,我们收到 341 条记录(偏移量 2000 到 2340)和一个next_offsetwith -1,表示没有更多记录。这意味着我们现在已收到所有可用的 1000 + 1000 + 341 = 2341 条记录。

结果概述:

 ______________________________
|                              |  \                  \
|                              |   |                  \
|         "Page 1"             |   |__ 1000 records    |
| records at offset     0..999 |   |                   |
|                              |   |                   |
|______________________________|  /                    |
|                              |  \                    |
|                              |   |                   |__ all 2341 records
|         "Page 2"             |   |__ 1000 records    |
| records at offset 1000..1999 |   |                   |
|                              |   |                   |
|______________________________|  /                    |
|                              |  \                    |
|         "Page 3"             |   |__  341 records    |
| records at offset 2000..2340 |   |                  /
|______________________________|  /                  /

推荐阅读