2017-12-01 12 views
0

내 웹 사이트에서 YouTube 검색 API를 구현 중입니다. 내 경로에서 API를 호출하면 결과가 반환되지만 결과가 계산되는 동안 페이지가 렌더링됩니다. 비동기 동작 때문입니다.YouTube 검색 API 결과가 EJS 파일에 표시되지 않음

내 경로 통해 내가 API를 호출 오전 : 나는 API를 호출 표시 내 EJS 파일의 결과를 사용할 수있는 방법을

router.get('/video/results/:search_query', middleware.ensureAuthenticated, function (req, res) { 
 
    query = req.params.search_query; 
 
    console.log(query); 
 
    var dataFinal; 
 
    var resp = youtube.search.list({ 
 
     part: 'snippet', 
 
     q: query, 
 
     type: 'video' 
 
    },function (err, data, response) { 
 
     if (err) { 
 
      console.error('Error: ' + err); 
 
      res.json({ 
 
       status: "error" 
 
      }); 
 
     } 
 
     if (data) { 
 
      // console.log(typeof data); 
 
      dataFinal = data; 
 
      // return res.json({ 
 
      //  status: "ok", 
 
      //  data: data 
 
      // }); 
 

 
      console.log(data); 
 
      //res.render('resultsVideo',{results:data}) 
 
     } 
 
    }); 
 
    res.render('resultsVideo',{data:dataFinal}) 
 

 
});

말해주십시오.

답변

0

원하는 콜백 함수를 사용하여 원하는 결과를 얻을 수 있습니다.

router.get('/video/results/:search_query', middleware.ensureAuthenticated, function (req, res) { 
    query = req.params.search_query; 
    console.log(query); 
    var dataFinal; 
    function resp() = youtube.search.list({ 
     part: 'snippet', 
     q: query, 
     type: 'video' 
    },function (err, data, response) { 
     if (err) { 
      console.error('Error: ' + err); 
      res.json({ 
       status: "error" 
      }); 
     } 
     if (data) { 
      // console.log(typeof data); 
      return data; 
      // return res.json({ 
      //  status: "ok", 
      //  data: data 
      // }); 

      console.log(data); 
      //res.render('resultsVideo',{results:data}) 
     } 
    }); 
    res.render('resultsVideo',{data:resp()}) 

});