2017-11-05 3 views
0

これは別のスレッドではおそらくカバーされていると私は完全に認識していますが、私はJavaScriptとNodeを初めて使い、何を探しているのか完全にはわかりません。JavaScript、コンソールでしか見ることのできない値を返す方法は?

私は、データをエクスポートするために、Domoというプレゼンテーションレイヤーで作業しており、APIにアクセスしようとしています。データにアクセスするには、接続するトークンを確立する必要があります。

私は呼び出しを成功させてコンソールに値を記録することができましたが、値を配列などのオブジェクトにプッシュすることができません。私はこれが無名関数だと信じて、それを使う方法を見つけようとしています。私の研究はクロージャ、コールバック、リターン、リターン、そして直ちに呼び出された関数のすべてですが、ここでは何かが欠けています。誰かが私を正しい方向に向けることができますか?

**Here is the code:** 
var http = require("https"); 

var tokenoptions = { 
"method": "GET", 
    "hostname": "api.domo.com", 
    "port": null, 
    "path": "/oauth/token?grant_type=client_credentials&scope=data%20user", 
    "headers": { 
       "Accept":"application/json", 
       "Authorization": "Basic MyClientAndSecretGoesHere" 
       } 
} 

var req = http.request(tokenoptions, function (res) { 
    var chunks = []; 
    var token = []; 

res.on("data", function (chunk) { 
        chunks.push(chunk); 

            }); 

res.on("end", function() { 
       body = Buffer.concat(chunks); 
       console.log(body.toString()); 
          }); 

}); 
req.end(); 

**End Code** 

Console.log(body.toString())は必要な値ですが、これを配列やオブジェクトにどのように割り当てるのですか?これは無名関数ですか?

私は本当に助けていただきありがとうございます。これが重複投稿であれば、事前にお詫び申し上げます。このサイトの年齢とともに、私は新しい投稿がどのようにできなかったかはわかりません。

+2

なぜこれを配列に格納する必要がありますか?なぜそれを変数に格納できないのですか? –

+1

配列に割り当てるには、 'var arr = [body.toString()]'を使います。その値で何をしたいのかは、そのコールバック関数内から行う必要があることを覚えておいてください。 –

+0

関数が匿名であるかどうかは関係ありません。*非同期*と呼ばれることが重要です。 – Bergi

答えて

0

私が正しく理解していれば、そのデータをコールバックの外で使用するJavascriptオブジェクトにしたいと思うでしょう。私はDomo APIのドキュメントを読んでいましたが、これはあなたのためにうまくいきたいと思います:

var http = require("https"); 

var tokenoptions = { 
    "method": "GET", 
    "hostname": "api.domo.com", 
    "port": null, 
    "path": "/oauth/token?grant_type=client_credentials&scope=data%20user", 
    "headers": { 
     "Accept":"application/json", 
     "Authorization": "Basic MyClientAndSecretGoesHere" 
    } 
} 

var req = http.request(tokenoptions, function(res) { 
    var chunks = []; 
    var token = []; 

    res.on("data", function(chunk) { 
     chunks.push(chunk); 
    }); 

    res.on("end", function() { 
     body = Buffer.concat(chunks); 
     nextAction(JSON.parse(body.toString())); 
    }); 
}); 

req.end(); 

function nextAction(obj) { 
    console.log(obj); 
} 
+0

ありがとうございます!上記の回答は完全に機能しました。私はまた、戻り値を保持することを可能にする戻り関数を見つけました。トークン関数(returntoken){ returnトークン(); } //console.log(body.toString()); }); }); req.end(); – nblack8

関連する問題