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

How to get all records from a module - SugarCRM version 7+

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

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

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

但是returns只有20条记录?

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

我需要帮助

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

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

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

备注

  • 我建议指定一个 fields 数组,其中包含您在请求中需要的字段名称。否则,您可能会在检索大量记录时浪费大量 time/bandwith/memory。
  • 设置$sugar_config['max_record_fetch_size']也会影响例如您可以在列表视图中使用 "select all" 多少条记录。

分页示例

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

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

请求 #1

{
    offset: 0,
    max_num: 1000
}

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

来自服务器

的响应 #1
                             {
                                 next_offset: 1000,
                                 records: [array of 1000 records]
                             }

我们在响应 #1 中收到前 1000 条记录(偏移量 0 到 999),我们所做的第一条记录的偏移量 not 还没有 1000 next_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]
                             }

Response #3 中我们收到 341 条记录(偏移量 2000 到 2340)和一个 next_offset with -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 |   |                  /
|______________________________|  /                  /