3

私は Zapier を数週間使用していますが、通常どおり、各機能を構築するにつれて、私たちのニーズと要望はより複雑になっています。したがって、「Code by Zapier」のJavaScriptに関する現在の問題。

回答のメモ: 私自身と私が利用できるプログラマーのチームは JavaScript の専門家ではありませんが、ほとんどの概念を理解しています。

目的: JavaScript への入力が true の場合にのみ fetch() 呼び出しを行う。

問題: コードに fetch() が含まれている場合、Zapier は常に「出力が定義されていません」を返します。

ReferenceError: 出力が定義されていません

つまり、全体的なコード構造は問題ありませんが、fetch() を使用して戻り、処理する方法はそうではありません。

私は無数のバリエーションを試し、ここでいくつかの素晴らしい投稿を利用しましたが、何も問題を解決しませんでした.

簡略化されたコードは次のようになります。

 //This does the Fetch:
function doFetch(urlAddress) {
    console.log("2. Doing Fetch");
    return fetch(urlAddress)
        .then(function(res) {
            return res.text();
        })
        .then(function(response) {
            //Hardcode a return.
            console.log("3. Returning Response");
            return response.json();
        });
}

if (input.emailHasChanged == "true") 
{
    //Do Something
    console.log("1. Updating Email");
    doFetch(urlAddress)
        .then(function(response) {
            //Do something with Reponse.
            console.log("4. Doing Something: ", response);
            callback(null, response);
        });
}
else
{
    //Do Nothing
    console.log("1. Not Updating email");
    output = {id: 2};
}

fetch() または JavaScript の非同期の性質から戻る方法だと思います。

注: Zapier は、'input' 変数と 'output' 変数を事前に定義しています。'output' は最初は Null で、コードによって値を設定する必要があります。

4

2 に答える 2

2

この関数は正しくありません:

//This does the Fetch:
function doFetch(urlAddress) {
    console.log("2. Doing Fetch");
    return fetch(urlAddress)
        .then(function(res) {
            return res.text();
        })
        .then(function(response) {
            //Hardcode a return.
            console.log("3. Returning Response");
            return response.json(); // <-- response is an string. This method is not defined.
        });
}

fetch().text()と をそれぞれ使用して本文をテキストまたは JSON として読み取るメソッドを持つ応答オブジェクトで解決されます.json()。の解決値.text()string、メソッドを持たない.json()です。本文を単純に JSON として解析する場合は、次を使用します。

//This does the Fetch:
function doFetch(urlAddress) {
    console.log("2. Doing Fetch");
    return fetch(urlAddress)
        .then(function(res) {
            return res.json();
        });
}
于 2016-01-26T11:49:04.630 に答える