web-dev-qa-db-ja.com

Azure Logic Appの「if」条件アクションで「null」チェックを行う方法

いくつかのトリガー、「http」コネクタ、次に「If」条件アクティビティを含むロジックアプリを作成しました。 'http'コネクタは 'json'結果を返しますjsonObj

@equal(body('HTTP')['jsonObj'].someProperty,'someValue')として条件をチェックできますが、そのnull値に対してsomePropertyチェックを実行できません。

以下は、私が試したいくつかの方法で、機能していません。

@equal(body('HTTP')['jsonObj'].someProperty, null) --Unable to save
@equal(body('HTTP')['jsonObj']?.someProperty,'null') --Comparing with string value 'null'
11
Santhosh Ramini

nullまたはundefinedを直接テストする実際の方法は見つかりませんでしたが、coalesceのフォールバックとして十分な「ランダム」文字列を選択すると、次の回避策が機能します。

...
"propExists": "@equals(coalesce(triggerBody()?.prop, 'Fallback42'), 'Fallback42')"
...

たとえば、次のロジックアプリは、プロパティpropと、それが実際に指定されたかどうかをエコーバックします

{
    "$schema": "https://schema.management.Azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "actions": {
        "Response": {
            "inputs": {
                "body": {
                    "propNull": "@equals(coalesce(triggerBody()?.prop, 'undefined'), 'undefined')",
                    "prop": "@triggerBody()?.prop"
                },
                "statusCode": 200
            },
            "runAfter": {},
            "type": "Response"
        }
    },
    "contentVersion": "1.0.0.0",
    "outputs": {},
    "parameters": {},
    "triggers": {
        "request": {
            "inputs": {
                "schema": {}
            },
            "kind": "Http",
            "type": "Request"
        }
    }
}

でのリクエスト

{
    "prop": "test"
}

結果は

{
  "prop": "test",
  "propNull": false
}

一方、

{
    "propOther": "test"
}

結果は

{
  "prop": null,
  "propNull": true
}
7
DAXaholic

これで次のことができます。

 @equals(triggerBody()['jsonObj']?['someProperty'], null)

これは有効で保存できますが、基本モードに切り替えようとするとエラーが発生します。まだ保存できます。

11
Chris76786777