如何从模块中获取所有记录 - 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 的偏移量),我们做的第一条记录的偏移量 不是 有 2000
如 next_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 | | /
|______________________________| / /
根据 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 的偏移量),我们做的第一条记录的偏移量 不是 有 2000
如 next_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 | | /
|______________________________| / /