问题可能不清楚,但我的问题非常简单
SugarCRM documentation表示要获取记录,我应该向/<module>/:recordId
发送GET请求。
我想要实现的是通过电子邮件获取记录。
在以前版本的SugarCRM中,我可以在有效负载请求中向其API发送SQL查询。 但是,因为这是一个GET请求,所以没有正文。
我需要帮助
答案 0 :(得分:3)
要通过匹配非ID字段来获取记录,您可以使用记录过滤器API #define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
(请参阅Sugar的documentation或/<module>/filter
)来指定要搜索的字段什么价值观。
如果您只关心一个匹配记录,请在选项中指定/rest/v10/help
。
作为响应,您将收到一个带有"max_num": 1
数组的json对象,其中包含匹配的记录。
按电子邮件地址过滤
电子邮件地址以前存储在字段email1,email2等中。 这些遗留字段在Sugar&gt; = 7(现在)中仍然存在,并且可以与请求有效负载一起使用,如下所示:
records
这将仅在辅助电子邮件地址中搜索电子邮件地址。
但是,在现代Sugar中,电子邮件地址存储在一个名为{
max_num: 1,
filter: [
{"email2": "test@secondary.test"},
],
fields: ["id"],
}
的关系支持链接字段中,该字段连接到可以像这样搜索的EmailAddress记录:
email_addresses
这将返回任何电子邮件地址匹配的记录。无论是主要的还是另一个。
随机相关说明
{
max_num: 1,
filter: [
{"email_addresses.email_address": {"$equals": "test@something.test"}},
],
fields: ["id"],
}
和GET
方法,因此您可以选择是通过请求的查询字符串还是在请求正文中传输过滤器定义和选项。POST
对GET
端点的请求将使用相同的底层过滤器API。但是,您无法使用/<module>
上的POST
进行过滤,因为该组合是为创建新记录而保留的。/<module>
来完成此操作,例如对于%
,似乎需要使用与%@whatever.test
不同的运算符,例如$equals
或$starts
。$contains
(/<module>/count
)端点或GET
(/<module>/filter/count
或GET
)。POST
,以确保您可以立即看到它,如果由于过滤器定义不正确而导致结果出现任何误报。那或者密切关注响应json中的max_num
:如果没有比响应中已经返回的结果更多的结果,它将具有值next_offset
。-1
运算符有一个简短的表示法,例如$equals
也可以写为{"email_addresses.email_address": {"$equals": "test@something.test"}},
,。