Zapier重新格式化获取获取响应

时间:2017-04-07 09:29:41

标签: javascript json fetch zapier

我在Zapier遇到一些问题并获取一些信息。

我要做的是获取网址,接收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'
})

我希望所有绿色的猫都回到下一步。如果所有cat属性都在不同的zapier字段中,我该怎么做?

我尝试的另一件事是在我提出GET请求后重新格式化zapier下一步响应,但zapier没有听我说。

fetch('www.url.com', options)
  .then(function(res) {
    callback(null, {dog: 'yorkie'})
  })
  .catch(callback);

以上代码应该只发送我传递的对象{dog: 'yorkie'},但它会返回相同的zapier格式的cat响应'。

此外,当我没有遵循zapier回调格式并只是输入fetch请求时,它也会发回“zapier格式化的cat响应”。到下一步。

fetch('www.url.com', options)

1 个答案:

答案 0 :(得分:0)

您可能希望在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对象格式 - 所以最好的办法是返回一个没有嵌套数组的对象。