Zapier переформатирует ответ Get Fetch

У меня проблемы с 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'
})

Я хочу, чтобы все зеленые кошки вернулись к следующему шагу. Как я могу это сделать, если все атрибуты cat находятся в разных полях zapier?

Еще я попробовал переформатировать ответ zapier на следующий шаг после того, как я сделал запрос GET, но 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)

person Rastalamm    schedule 07.04.2017    source источник


Ответы (1)


Скорее всего, вы захотите выполнить всю фильтрацию на шаге 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 в последующих шагах - поэтому лучше всего вернуть объект без вложенных массивов.

person Bryan Helmig    schedule 07.04.2017