首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从模块中获取所有记录- SugarCRM版本7+

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

Stack Overflow用户
提问于 2018-06-13 21:15:20
回答 1查看 584关注 0票数 2

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

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

代码语言:javascript
复制
{
    "max-num": "-1",
    "offset": "0",
    "order-by": "date-entered",
    "favorites": false,
    "my-items": false
}

但只返回20条记录?

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

我需要帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 02:11:03

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

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

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

笔记

  • 我建议您使用请求中所需字段的名称指定一个fields数组。否则,当检索大量records.
  • Setting $sugar_config['max_record_fetch_size']时,可能会浪费大量时间/带宽/内存,例如,在列表视图中使用"select all“可以选择多少条记录。

分页示例

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

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

请求#1

代码语言:javascript
复制
{
    offset: 0,
    max_num: 1000
}

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

来自服务器的响应#1

代码语言:javascript
复制
                             {
                                 next_offset: 1000,
                                 records: [array of 1000 records]
                             }

我们收到响应#1中的前1000条记录(偏移量0到999),正如next_offset中指定的那样,我们尚未获得的第一条记录的偏移量为1000

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

请求#2

代码语言:javascript
复制
{
    offset: 1000,
    max_num: 1000
}

来自服务器的响应#2

代码语言:javascript
复制
                             {
                                 next_offset: 2000,
                                 records: [array of 1000 records]
                             }

我们收到接下来的1000条记录(偏移量1000到1999)在响应#2中,我们不使用的第一条记录的偏移量是2000,如next_offset中所指定的

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

请求#3

代码语言:javascript
复制
{
    offset: 2000,
    max_num: 1000
}

服务器响应#3

代码语言:javascript
复制
                             {
                                 next_offset: -1,
                                 records: [array of 341 records]
                             }

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

结果概述:

代码语言:javascript
复制
 ______________________________
|                              |  \                  \
|                              |   |                  \
|         "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 |   |                  /
|______________________________|  /                  /
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50838250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档