gpt4 book ai didi

azure - 为什么逻辑应用的 if() 表达式同时执行两个代码路径?

转载 作者:行者123 更新时间:2023-12-02 06:46:38 25 4
gpt4 key购买 nike

我在逻辑应用程序上遇到失败,因为 if() 表达式同时执行 true 和 false 路径。错误路径如果执行就会失败,这就是为什么我首先将它放在 if() 中。

表达式为:

if(empty(triggerBody()?['data']?['eta']), null, formatDateTime(triggerBody()?['data']?['eta'], 'yyyy-MM-dd'))

我也尝试过:

if(equals(triggerBody()?['data']?['eta'], null), null, formatDateTime(triggerBody()?['data']?['eta'], 'yyyy-MM-dd'))

数据为空:

...
"data": {
"eta": null,
...

我通过将 formatDateTime() 替换为“is not null”之类的字符串来对此进行了测试。当我这样做时,我得到了预期的输出(空)并且没有失败。

更新:逻辑应用团队的某人建议采用以下替代方案:

@if(empty(triggerBody()?['data']?['eta']), null, formatDateTime(coalesce(triggerBody()?['data']?['eta'], '1999-01-01'), 'yyyy-MM-dd'))

这里建议使用coalesce(),因为它返回第一个非空结果。因此,通过这种方式,我至少可以确保为 formatDateTime() 提供一个值。

最佳答案

为什么?因为它就是这样写的。 ;)

您所看到的是 LogicApp 中 if() 执行的预期行为。 LogicApp 团队的某人提到了这一点( channel 9?,抱歉不记得了),并且不要指望它会很快改变。

如果任一情况都可能导致运行时错误,您需要分两步执行。

关于azure - 为什么逻辑应用的 if() 表达式同时执行两个代码路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49324758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com