2016-09-13 3 views
0

내 NodeJS 앱에서 Postgres에 쿼리를 작성한 다음 PG 결과의 모든 행에 대해 GET 요청을해야합니다. 모든 GET 결과를 배열로 반환하십시오. 내 코드를 잘못 무엇약속을 사용하여 NodeJS에서 Postgres 쿼리와 GET 요청을 연결하는 방법

?

var promise = require('bluebird'); 
var pgp = require('pg-promise')({ promiseLib: promise }); 
var db = pgp(connectionString); 
var rp = require('request-promise'); 

var query = 'select id from my_table'; 

var processIDs = pgResults => { 
    var requests = pgResults.map(row => rp(`mysite.com/${row.id}`)); 
    return promise.all(requests); 
} 

db.any(query) 
    .then(processIDs) 
    .then(results => console.log(results)); 

두 번째 질문은 최종 결과 배열에 PG 쿼리의 ID를 포함시키는 방법입니까? 최종 결과에 PG 쿼리에서 ID를 포함

+0

가능한 중복() chain?] (http://stackoverflow.com/questions/28250680/how-do-i-access-previous-promise-results-in-a-then-chain) –

답변

1

한 가지 방법은 그렇게, processIDs 전화 내부에 또 다른 약속을하는 것입니다 :

var processIDs = (result) => { 
    var ids = result.map(row => row.id); 
    var requests = ids.map(id => request(`mysite.com/${id}`)); 
    return promise.all(requests) 
     .then(results => { 
      // not sure how u want to include `ids` in results, but its available in this scope 
      // just think that it's weird, cuz `results` is supposed to be 
      // an array of HTTP responses, right? 
      return results; // results.concat(ids) || results.push(ids) 
     }); 
} 
나는 그 때는에서 이전 약속의 결과에 액세스하려면 어떻게해야 [의
+0

감사합니다! 전체 코드 작업을 수행하는 방법은 무엇입니까? –

+0

어떤 오류가 발생합니까? promise chain에'.catch (err => console.log (err))'호출을 포함하고 오류가 있는지 확인하십시오. – juanmaia

+0

내가 요청한 서비스에 오류가 발생했습니다. 이제 작동합니다. 많은 감사합니다! –

관련 문제