Modulo无法在Logic App中处理Liquid模板,但可以在本地工作

时间:2019-04-10 13:58:20

标签: liquid azure-logic-apps

以下模板包含任何数组作为内容:

{%- for datapoint in content -%}
{%- assign breaker = (forloop.index | modulo: 4) -%}
{{breaker}}
{% if breaker == 0 %};
{% endif %}
{%- endfor -%}

以Visual Studio代码产生此输出,并且与文档一致:

1 2 3 0 1 2 3 0 1 2 3 0

(为了可读性,我添加了空格而不是新行)

在azure逻辑应用程序上运行相同的模板将产生此输出

1 2 3 4 5 6 7 8 9 10 11 12

是否还有其他方法可以使用Liquid模板以无模数的方式实现相同的输出?好像可能是一个问题,

{%- assign arraysize = content | size -%}

似乎也不起作用,但是

{%- assign arraysize = content.size -%}

工作正常。但是我不确定如何以这种方式使用模。

1 个答案:

答案 0 :(得分:1)

我相信modulo应该是Modulo(大写的“ M”)

对于Liquid模板,Logic Apps使用DotLiquid库,该库配置了C#命名约定(请参阅this),要求使用大写的过滤器名称。

Transforming JSON”在Logic Apps文档中的注释中也提到了这一点。

基本上,与原始红宝石过滤器相比,过滤器必须像这样

  • at_least成为AtLeast
  • plus成为Plus

更新:不确定括号在液体中是否有效,但我必须将其删除以用于Logic Apps

{%- for datapoint in content -%}
{%- assign breaker = forloop.index | Modulo: 4 -%}
{{ breaker }}
{%- endfor -%}