【问题标题】:Fetch in IF statement produces output errorIF 语句中的 Fetch 产生输出错误
【发布时间】:2018-03-29 09:51:17
【问题描述】:

我正在与 Asana 和 Zapier 合作,并且正在努力在项目中获取一个部分,如果它不存在,可以选择创建一个。 Zapier 本身不存在此操作。

我使用 Zapier 代码执行 GET,该代码成功地将 sectionId 返回为 0,或者来自 Asana 的实际 id。

在下一个操作中,我正在再次执行 Zapier Code,并且我正在尝试执行 POST 来创建 Section,但前提是 GET 操作返回的 sectionId 为 0。

我认为我遇到的问题与对异步编程缺乏了解有关。但是,我或多或少地将成功的 GET 操作中的代码复制到了新操作中,并将 HTTP 请求更改为 POST。

如果我删除 if 语句,那么 POST 会按预期工作。

我遇到困难的地方是将 fetch 包装在 if 语句中。我试图简单地将它包装在 if 语句中(如果为 0,则执行 fetch,否则,返回不为 0 的 ID),并将其创建为我放入 if 语句中的函数。我尝试了每种方法的几种不同配置,但无论哪种方式,我收到的错误是:

讨价还价。我们在创建运行 JavaScript 时遇到错误。 :-( 错误: ReferenceError: 未定义输出

这是我的代码:

var sId = input.sId;

function doFetch(aPId) {
  var settings = {
    'method': 'POST',
    'headers': {
      'Authorization': 'Bearer <ACCESS TOKEN>',
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    'body': "name=Emails%3A"
  };

  var url = 'https://app.asana.com/api/1.0/projects/' + aPId + '/sections';

fetch(url,settings)
  .then(function(res) {
    return res.json();
  })
  .then(function(json) {
    callback(null, json);
  })
  .catch(callback);
}

if(sId === 0){
  return doFetch(input.asanaProjectId);
}

output = [{test: 123}];

有什么想法吗?

【问题讨论】:

    标签: node.js fetch-api zapier


    【解决方案1】:

    好的,我修好了。我无法完全解释,但这有效。我相信 if 语句本身就是问题所在。

    var sId = inputData.sId;
    
    function createSection(aPId) {
      var settings = {
        'method': 'POST',
        'headers': {
          'Authorization': 'Bearer <ACCESS TOKEN>',
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        'body': "name=Emails%3A"
      };
    
      var url = 'https://app.asana.com/api/1.0/projects/' + aPId + '/sections';
      console.log('Settings:',settings);
      console.log('URL:',url);
    
    
      fetch(url,settings)
        .then(function(res) {
          var response = res;
          //console.log(response);
          return response.json();
        })
        .then(function(json) {
          //console.log(json);
          var sId = json['data']['id'];
          callback(null,{sectionId: sId});
        })
        .catch(callback);
    
    }
    
    if(sId == 0){
      var sId = createSection(input.asanaProjectId);
      console.log('If test ran!');
    } else {
      output = [{sectionId: sId}]; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-06
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多