如果不满足条件,则不返回任何内容?

时间:2018-03-28 13:44:26

标签: javascript json function callback zapier

我一直在使用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为假,我应该返回什么才能防止错误?

1 个答案:

答案 0 :(得分:1)

选择错误Error: You must return a single object or array of objects.

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

您正在使用此声明buy === true

callback(callback(null, {}));条件执行此操作

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

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

您的代码看起来像这样

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网址,因为它现在已公开,任何人都可以触发它。

我建议使用下面的代码块 - (注意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, {});