2012-09-02 4 views
0

몽고 데이터베이스에 등록 된 모든 사용자와 함께 목록을 반환하는 함수를 작성하고 있습니다.몽구스 결과 익명 함수에서 부모 함수 반환

function getUsers() { 
    db.collection('users').find({}, {username: true}, function(error, results) { 
     if (results) return results; 
     return []; 
    }); 
} 

문제는 몽구스 결과를 얻기 위해 익명 함수를 필요로하고, 나는 그것을있을 때 그 결과를 반환하려고하면 부모 함수가 정의되지 않은 반환, 그래서 만 반환 익명 함수에 영향을줍니다. 몽구스가 익명 함수를 비동기 적으로 실행한다고 가정합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다.

+0

약속에 대해 읽은 내용이 있지만 코드에 구현하는 방법을 모르겠습니다. – Miguel

답변

2

당신 말이 맞습니다. 비동기 함수에서 돌아 오는 것은 의미가 없습니다. 비동기 적으로 데이터베이스 조작 결과를 처리해야합니다. (Kamugo 언급처럼 약속을 사용할 수도 있지만 콜백 함수를 사용하는 약속조차도).

function getUsers(callback) { 
    db.collection('users').find({}, {username: true}, callback); 
} 

을 그리고 다음과 같이 사용 :

이 일을하는 가장 직선 전달 방법은 find에 콜백을 위해 그 콜백 콜백을 전달하고 사용하여 getUsers 비동기를 확인하는 것입니다

getUsers(function(error, results) { 
    if (results) { 
     // do something with results 
    } else { 
     // no results 
    } 
}); 
+0

감사합니다. 익명의 함수를 다른쪽에 넣는 것에 대해 생각하지 않았습니다. – Miguel

관련 문제