2015-01-07 4 views
1

나는 몽구스를 사용하는 nodejs/mongodb 프로젝트와 약속을 위해 블루 버드를 가지고있다.약속/bluebird가 포함 된 병렬 몽구스 쿼리?

여기 내 문제가 있습니다 : 때때로 하나의 쿼리, 때로는 2 개의 쿼리를 병렬로 실행해야하는 함수가 있으며 두 쿼리의 결과를 조인합니다.

function(param) { 
    // 1st query 
    query1.exec 

    // 2nd query, should be done in parallel with the 1st 
    if (param) 
    query2.exec 

    // process requiring result from both queries 
    callback() 
} 

내가 비동기 병렬 작업을 수행하는 방법을 알고 있지만 내가 블루 버드 또는 몽구스와이를 수행하는 방법을 이해하지 않습니다 : 여기에 의사 코드 (나는 커피 스크립트를 사용하기 때문에, 그러나 이것은 관련이 없습니다)입니다 약속 해.

감사합니다,

답변

1
function(param) { 
    return Promise.all([ 
     query1.exec(), 
     param ? query2.exec() : null 
    ]).nodeify(callback); 
} 
+0

많은 감사 답변을 위해, 나는 마지막으로이 일을 할 수 있었다. 그러나 나는 각 약속의 결과를 읽기 위해 bluebird .spread를 사용하여 노드 화하지 않고 이것을 수행했습니다. – Owumaro

+0

@Owumaro 네, 그게 아마도 좋습니다 - 대신에'callback'을 반환하는 대신에 이것이 반환하는 약속을 반환하고 바깥에서 연결합니다. 이미 Bluebird를 사용하고 있다면 외부 API에 물건을 드러내는 것을 제외하고는'nodeify '를 호출 할 필요가 없습니다. –

+0

어떻게 오류를 확인 하시겠습니까? 쿼리에서 404를 반환하면 어떻게됩니까? – honkskillet