要通过匹配非id字段来获取记录,可以使用记录过滤器API
/<module>/filter(请参阅文档或
/rest/v10/helpSugar的文档)来指定要搜索哪些值的字段。
如果最多只关心一条匹配的记录,请
"max_num": 1在选项中指定。
作为响应,您将收到一个json对象,该对象包含一个
records包含匹配记录的数组。
按电子邮件地址过滤
电子邮件地址以前存储在字段email1,email2等中。那些旧字段仍然存在于Sugar> = 7(目前)中,可以与请求有效负载一起使用,如下所示:
{ max_num: 1, filter: [ {"email2": "test@secondary.test"}, ], fields: ["id"],}这将仅在辅助电子邮件地址中搜索电子邮件地址。
但是,在现代的Sugar中,电子邮件地址存储在一个由关系支持的链接字段中
email_addresses,该字段连接到EmailAddress记录,可以通过以下方式进行搜索:
{ max_num: 1, filter: [ {"email_addresses.email_address": {"$equals": "test@something.test"}}, ], fields: ["id"],}这将返回与 任何 电子邮件地址匹配的记录。不管是主要的还是另一种。
随机相关笔记
- 过滤器端点显然支持
GET
和POST
方法,因此您可以选择是通过请求的查询字符串还是在请求正文中传输过滤器定义和选项。 GET
向/<module>
端点的请求将使用相同的基础过滤器API。但是,您不能使用POST
on进行过滤/<module>
,因为该组合保留用于创建新记录。- 如果不确定在Sugar过滤器语法中搜索条件应该是什么样子,则可以使用Sugar在模块列表视图中创建示例过滤器,然后在浏览器的调试器的``网络’‘选项卡中检查Sugar产生的请求有效载荷是什么样。
- 如果您需要通配符搜索,则可以通过使用通配符来实现
%
,例如,for%@whatever.test
似乎需要使用与操作符不同的运算符$equals
,例如,$starts
或$contains
。 - 如果您只关心匹配数而不是实际记录,则将过滤器发送到
/<module>/count
(GET
)端点或/<module>/filter/count
(GET
或POST
)。 - 在开发测试期间,我建议使用
max_num
比预期返回值高的值,以确保在由于过滤器定义不正确而导致结果出现误报时立即看到它。还是要next_offset
在响应json中密切注意:-1
如果没有比响应中已经返回的结果更多的结果,它将具有该值。 $equals
运算符有一个简短的表示法,例如{"email_addresses.email_address": {"$equals": "test@something.test"}},也可以写成{"email_addresses.email_address": "test@something.test"}。



