2017-05-15 1 views
0

私はNode.jsにアプリケーションを構築し、ルータとAPIモジュールを持っているところからHTTPリクエストを出します。私はコールバック間で値を渡すことに頭を抱えて苦労しています。非同期コールバックからの値の再利用

それは次のようになります。

ルータ:

var dataAPI = require('../API/getData'); 
var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
     dataAPI.getData(function(res, data){ 
       res.render('index', {data: data}); 
     }); 
}); 

module.exports = router; 

そしてgetAPIファイルがこの機能を持っています

var request = require('request'); 
var config = require('../config/config'); 

getData = function(callback){ 
    request({ 
     headers: { 
      'Content-Type' : 'application/json', 
      'Authorization' : config.authorization.token 
     }, 
     uri: config.url.get_portfolio, 
     method: 'GET', 
     rejectUnauthorized: false, 
    }, function(err, res, body){ 
     if (err || body == undefined){ 
      console.log("Error in first callback."); 
      throw err; 
     } 
     console.log("HTTP: ", res.statusCode, " GOT DATA: ", body); 
    }); 
} 

私がここに達成したいことは

を行うことができるようにすることです
res.render('index', {data }) 

そして、getData関数で作成されたリクエストのデータを使用します。それを行う正しい方法は何ですか?

答えて

1

あなたがたgetData関数からの要求にコールバックを使用していないと、コールバックパラメータは はこれをやってみてください間違っている:

var dataAPI = require('../API/getData.js') 
var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res, next) { 
     dataAPI.getData(function(err,data){ 
       if(err) throw err; 
       res.render('index', {data: data}); 
     }); 
}); 

//getData.jsは

var request = require('request'); 
var config = require('../config/config'); 

exports.getData = function(callback){ 
    request({ 
     headers: { 
      'Content-Type' : 'application/json', 
      'Authorization' : config.authorization.token 
     }, 
     uri: config.url.get_portfolio, 
     method: 'GET', 
     rejectUnauthorized: false, 
    }, function(err, res, body){ 
     if (err || body == undefined){ 
      console.log("Error in first callback") 
      callback(new Error("Error in first callback."),null) <---------- 
     }else{ 
      console.log("HTTP: ", res.statusCode, " GOT DATA: ", body); 
      callback(null,body) <-------------- 
     } 
    }); 
} 
+0

が働いていたこと、ありがとう提出。あなたの答えは私がしばらくの間得られなかった何かを説明しました! –

関連する問題