如何在Logic Apps中修改Salesforce消息的Id属性为小写id适配CosmosDB?
在Logic Apps中解决Salesforce Id转CosmosDB小写id的问题
有两种常用方法可以实现代码里[JsonProperty("id")]的等效效果,把Salesforce返回的大写Id映射成CosmosDB要求的小写id:
方法1:用Compose动作统一转换属性
添加一个Compose动作,通过表达式构造新的JSON对象,完成属性重命名并保留其他字段:
- 如果属性不多,可以直接手动构造:
{ "id": @body('获取Salesforce记录')?['Id'], "AccountName": @body('获取Salesforce记录')?['Name'], "CreatedDate": @body('获取Salesforce记录')?['CreatedDate'] } - 如果属性较多,用
removeProperty和union批量处理,避免逐个编写:
这个表达式会先给原对象添加小写removeProperty(union(body('获取Salesforce记录'), createObject('id', body('获取Salesforce记录')?['Id'])), 'Id')id属性,再删除大写的Id属性,自动保留其他所有字段。
方法2:直接在CosmosDB动作中构造Item
不需要额外的Compose动作,直接在CosmosDB的「创建项」或「更新项」动作的Item输入框里,构造包含小写id的JSON结构:
{ "id": @body('获取Salesforce记录')?['Id'], // 这里添加其他需要存入CosmosDB的属性,比如: "Description": @body('获取Salesforce记录')?['Description'], "OwnerId": @body('获取Salesforce记录')?['OwnerId'] }
注意事项
- 替换表达式里的
body('获取Salesforce记录')为你实际的Salesforce动作名称,比如你的动作叫「Get Salesforce Data」,就改成body('Get Salesforce Data')?['Id'] - 用
?['字段名']的写法可以避免字段不存在时出现报错,提升流程稳定性
内容的提问来源于stack exchange,提问作者Steve Moro
相关产品推荐
相关产品推荐

