REST API 检索的字段与对象管理器中的字段不对应

Posted

技术标签:

【中文标题】REST API 检索的字段与对象管理器中的字段不对应【英文标题】:Fields retrieved by the REST API do not correspond to fields in the object manager 【发布时间】:2022-01-13 07:28:36 【问题描述】:

我需要定期将Salesforce上的所有数据备份存储到本地数据库,所以我写了一个程序调用REST API/services/data/v53.0/sobjects访问所有sobjects,然后分别根据他们的名字调用/services/data/v53.0 sobjects/XXX/describegot每个对象的字段,但我发现我得到的字段与对象管理器中的字段不匹配。

我也尝试过直接使用 SOQL:

SELECT EntityDefinition.QualifiedApiName, QualifiedApiName, DataType

FROM FieldDefinition

WHERE EntityDefinition.QualifiedApiName = 'xxx'

但是还是不行,如果我需要将CRM数据备份到我自己的本地数据库,我需要怎么做?如何获取所有表格和所有字段并导出?

请帮帮我!

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点,但都不容易。过去,我使用通过 MSSQL 直接连接到 Salesforce 的插件。一个这样的应用程序是为此用例专门构建的。它称为 DBamp。不幸的是,它相当昂贵。您还可以使用 Jitterbit、Mulesoft、DellBoomi 或 Talend 等集成软件连接到您的 Salesforce 实例。这种方法需要创建一个适合您想要备份的对象的集成。

在免费方面,您可以使用 Excel 连接到您的 Salesforce 实例并下拉您想要的任何对象,但这可能不是一个理想的解决方案。 数据选项卡 > 获取数据 > 从在线服务 > 从 Salesforce 对象。

enter image description here

我见过其他解决方案,例如每周创建完整副本沙箱。最后一个选项是通过 SSIS 和 ODBC 连接器将 MSSQL 连接到 Salesforce,但这在过去是非常糟糕的体验,不过可能只是我。

【讨论】:

一些附加信息,sObject/describe 将只返回对象元数据(无记录数据)。返回的数据是 API 名称而不是字段标签。尝试使用工作台为您的组织探索 REST API,非常方便的工具。 workbench.developerforce.com/login.php 非常感谢!昨晚好像解决了这个问题,通过在对象管理器中设置相应字段的字段级别安全性。检查“可见”后,我可以通过调用 sObject/Describe 来检索该字段。我不确定这是正确的解决方案,但至少它有效。由于我需要使用Java程序来控制它的周期性下拉更新过程,所以我可能还需要调用接口或者执行SOQL。

以上是关于REST API 检索的字段与对象管理器中的字段不对应的主要内容,如果未能解决你的问题,请参考以下文章

在 Google API 资源管理器中检索到 Google Drive 网络视图链接,但在我的代码中没有

响应中的 Spring rest api 过滤器字段

Django rest framework 之 DictField、ListField、自定义字段

Django Rest Frame API:ModelSerializer 中的附加字段

在使用 SpringBoot 开发的 REST API 中映射到 Java 对象时,使 JSON 有效负载字段不区分大小写

Firestore使用Rest API更新文档字段