我在使用 Zapier 时遇到一些问题并正在获取一些信息。
我想要做的是获取一个 url,接收一个 json 响应并将整个响应发送回下一步以进行额外的处理。
Zapier 似乎忽略了回调或我编写的任何其他代码,只是向下一步发送“zapier 格式”响应,但不是 json 格式。以下是代码示例:
向客户提出请求
var authHeaders = {
'Authorization': 'Bearer xxxx',
'Content-Type': 'application/json'
}
var options = {
method: 'GET',
headers: authHeaders
};
fetch('www.url.com', options)
.then(function(res) {
return res.json();
})
.then(function (json) {
callback(null, json)
})
.catch(callback);
下拉列表中的 Zapier 下一步选项:
input.name === harry,bob,sally
input.color === red, blue, green
客户的回应
{
cats: [
{name: 'harry', color: 'red'},
{name: 'bob', color: 'blue'},
{name: 'sally', color: 'green'},
{name: 'mary', color: 'green'},
{name: 'george', color: 'green'}
]
}
我在下一个 zapier 步骤中想要的是客户端响应,而不是 Zapier 解释,这样我就可以正常循环和解析 json 对象。
cats.filter(function(cat){
return cat.color === 'green'
})
我希望所有绿色的猫都返回到下一步。如果所有的猫属性都在不同的 zapier 字段中,我该怎么做?
我尝试的另一件事是在发出 GET
请求后重新格式化 zapier 下一步响应,但 zapier 不听我的。
fetch('www.url.com', options)
.then(function(res) {
callback(null, {dog: 'yorkie'})
})
.catch(callback);
上面的代码应该只发送我传递的对象,{dog: 'yorkie'}
,但它返回相同的“zapier 格式的猫响应”。
此外,当我没有遵循 zapier 回调格式而只是放入 fetch
请求时,它也会将“zapier 格式化猫响应”发送回下一步。
fetch('www.url.com', options)
最佳答案
您可能希望在 JS 步骤中完成所有过滤,并且仅发出您关心的记录,而不是发出所有记录并创建过滤它们的新步骤。
fetch('www.url.com', options)
.then(function(res) {
return res.json();
})
.then(function (json) {
json = json.filter(record => record.color === 'green');
callback(null, json);
})
.catch(callback);
如果我们获取带有嵌套列表的对象 - 在后续步骤中可能很难将它们恢复为原始 JS 对象格式 - 因此最好的选择是返回一个没有嵌套数组的对象。
关于javascript - Zapier 重新格式化 Get Fetch 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43274547/