web-dev-qa-db-fra.com

Comment effectuer une vérification de la condition «nulle» dans l'action «si» de l'application Azure Logic

J'ai créé une application logique qui contient un déclencheur, un connecteur 'http' puis une activité de condition 'If'. Le connecteur 'http' renvoie un résultat 'json' disons jsonObj.

Je peux vérifier la condition en tant que @equal(body('HTTP')['jsonObj'].someProperty,'someValue') mais pas en mesure de faire une vérification de null sur cette valeur de someProperty.

Voici quelques méthodes que j'ai essayées et qui ne fonctionnent pas.

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

Je n'ai pas trouvé de véritable moyen de tester directement contre null ou undefined mais la solution de contournement suivante devrait fonctionner lors du choix d'une chaîne "aléatoire" suffisante comme solution de remplacement pour le coalesce

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

Par exemple, l'application logique suivante renvoie la propriété prop et indique si elle a été spécifiée ou non

{
    "$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"
        }
    }
}

de sorte qu'une demande avec

{
    "prop": "test"
}

résulte en

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

alors qu'une demande

{
    "propOther": "test"
}

résulte en

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

Vous pouvez désormais:

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

Il est valide et peut être enregistré, mais si vous essayez de passer en mode de base, vous obtiendrez une erreur. Peut encore économiser cependant.

11
Chris76786777