如何根据 http.call 中收到的令牌在 Google 工作流中进行比较(get)
How make a comparison in Google Workflows from a received token in a http.call (get)
我有一个简单的 Cloud Functions 响应:
{"pasValidate":true}
要么
{"pasValidate":false}
我需要 Cloud Workflows 正确比较 true 和 false 以采取正确的路线。我试过引号,没有引号,文档中唯一的部分是必须通过响应的“正文”部分引用变量然后使用它(真的,文档中没有其他内容)所以这就是我所做的:
- getData:
call: http.get
args:
url: https://us-central1-ACCOUNT.cloudfunctions.net/Cloud_Function
result: jsonResponse
- evaluateRes:
switch:
- condition: $(jsonResponse.body.pasValidate == "true")
next: logStep1
- condition: $(jsonResponse.body.pasValidate == "false")
assign:
- failLvl: "step1"
next: endFail
完成所有这些后,我得到以下失败 运行 响应:
in step "evaluateRes": {"message":"TypeError: in conditional predicate: expected boolean, got str","tags":["TypeError"]}
我知道它正在获取一个字符串而不是所需的 True/False,但在这一点上,我敢于向社区询问我缺少什么。也许有更简单的东西我没听懂。
来源:
首先,确保您的函数的响应是 application/json。您可以通过将响应 header 设置为 application/json
来实现。例如:
res.setHeader("Content-Type", "application/json");
如前所述,如果不这样做,您可能会遇到解析问题:
When a response of type application/json is stored in a variable, the JSON response is converted to a dictionary you access as a response body. Workflows includes a built-in parser for accessing this data.
接下来,在使用 switch
块时使用花括号 {}
而不是圆括号 ()
。也删除布尔值上的双引号。
switch:
- condition: ${jsonResponse.body.pasValidate == true}
next: logStep1
- condition: ${jsonResponse.body.pasValidate == false}
assign:
- failLvl: "step1"
next: endFail
我有一个简单的 Cloud Functions 响应:
{"pasValidate":true}
要么
{"pasValidate":false}
我需要 Cloud Workflows 正确比较 true 和 false 以采取正确的路线。我试过引号,没有引号,文档中唯一的部分是必须通过响应的“正文”部分引用变量然后使用它(真的,文档中没有其他内容)所以这就是我所做的:
- getData:
call: http.get
args:
url: https://us-central1-ACCOUNT.cloudfunctions.net/Cloud_Function
result: jsonResponse
- evaluateRes:
switch:
- condition: $(jsonResponse.body.pasValidate == "true")
next: logStep1
- condition: $(jsonResponse.body.pasValidate == "false")
assign:
- failLvl: "step1"
next: endFail
完成所有这些后,我得到以下失败 运行 响应:
in step "evaluateRes": {"message":"TypeError: in conditional predicate: expected boolean, got str","tags":["TypeError"]}
我知道它正在获取一个字符串而不是所需的 True/False,但在这一点上,我敢于向社区询问我缺少什么。也许有更简单的东西我没听懂。
来源:
首先,确保您的函数的响应是 application/json。您可以通过将响应 header 设置为 application/json
来实现。例如:
res.setHeader("Content-Type", "application/json");
如前所述,如果不这样做,您可能会遇到解析问题:
When a response of type application/json is stored in a variable, the JSON response is converted to a dictionary you access as a response body. Workflows includes a built-in parser for accessing this data.
接下来,在使用 switch
块时使用花括号 {}
而不是圆括号 ()
。也删除布尔值上的双引号。
switch:
- condition: ${jsonResponse.body.pasValidate == true}
next: logStep1
- condition: ${jsonResponse.body.pasValidate == false}
assign:
- failLvl: "step1"
next: endFail