【问题标题】:Returning nothing in function if condition not met?如果条件不满足,函数中什么也不返回?
【发布时间】:2018-09-07 05:45:50
【问题描述】:

我一直在使用 Zapier 的代码步骤来编写将变量信息发送到同一个 Webhook 的代码。当需要发送信息时,我想出了如何做到这一点,但是我只希望代码在购买条件为真时将对象发送到 Webhook。如果buy 不是真的,我希望它什么也不返回。

if(coins[i].buy===true)
{
fetch('https://hooks.zapier.com/hooks/catch/974762/krbqch/', { method: 
'POST', body: "Coin:"+coins[i].coin +",Value:"+coins[i].currentValue 
+",Buy:" +coins[i].buy+",Sell:"+coins[i].sell+",Date:"+currentDate})
    .then(function(res) {
        return res.json();
    }).then(function(json) {
        console.log(json);
    }).then(function() {
    callback(callback(null, {}));
  })
  .catch(callback);
}

如果buy 条件为假,我将收到“错误:您必须返回单个对象或对象数组”的错误。这很重要,因为大多数时候buy 将是错误的。我意识到这是因为没有回调,我只是不知道该放什么。那么如果buy为false,我应该返回什么来防止出错呢?

【问题讨论】:

  • 您是否在 if 语句之后尝试使用 return false ,还有一件事 javascript 假设一切都是真的,除非它是假的,您可以像这样评估条件 if(coins[i].buy) ,您不必 ===真的

标签: javascript json function callback zapier


【解决方案1】:

按错误进行,Error: You must return a single object or array of objects.

Zapier 希望您在最后返回一个对象或对象数组。

您正在使用此语句为buy === true 条件执行此操作 - callback(callback(null, {}));

尝试在条件块之外做同样的事情,只需添加同一行 - callback(null, {});

这会将{} 返回给 Zapier,即使条件为假,您的代码步骤也应该成功。

您的代码将如下所示

if(coins[i].buy===true)
{
fetch('https://hooks.zapier.com/hooks/catch/974762/krbqch/', { method: 
'POST', body: "Coin:"+coins[i].coin +",Value:"+coins[i].currentValue 
+",Buy:" +coins[i].buy+",Sell:"+coins[i].sell+",Date:"+currentDate})
    .then(function(res) {
        return res.json();
    }).then(function(json) {
        console.log(json);
    }).then(function() {
    callback(callback(null, {}));
  })
  .catch(callback);
}
callback(null, {});

这里有更多示例: https://zapier.com/help/code-examples/#introductory-http-example

您可能想要获取一个新的 webhook URL,因为它现在是公开的,任何人都可以触发它。

我建议使用下面的代码块 - (注意更改 callback 语句并删除一个 .then 块。)

if(coins[i].buy===true)
{
fetch('https://hooks.zapier.com/hooks/catch/974762/krbqch/', { method: 
'POST', body: "Coin:"+coins[i].coin +",Value:"+coins[i].currentValue 
+",Buy:" +coins[i].buy+",Sell:"+coins[i].sell+",Date:"+currentDate})
    .then(function(res) {
        return res.json();
    }).then(function(json) {
        console.log(json);
        callback(null, {});
    }).catch(callback);
}
callback(null, {});

【讨论】:

  • @anthony-trischitti 如果此答案解决了您的问题,请务必点赞并选择正确 (info here)
猜你喜欢
  • 2014-10-09
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多