2012-01-13 2 views
1

Model 쿼리에서 사용되는 콜백에 컨텍스트를 추가하는 올바른 방법은 무엇입니까? 예를 들어 ...Mongoose 콜백에 컨텍스트 추가

function doSomething(param) { 
    var magic = function(context, err, results) { 
     if(err) { console.log('fail'); } 
     else { 
      // do the magic with context and results 
     } 
    } 

    for(var i=0; i < 5; i++) { 
     var myObject = {'secret' : i}; 
     MyModel.find({number:param[i]}, magic(myObject, err, results)); 
    } 
} 

각 쿼리의 결과를 반복하고 myObject의 컨텍스트를 갖고 싶습니다. 위의 해결 방법은 작동하지 않습니다. '오류'및 '결과'가 정의되지 않았습니다.

나는 보통 익명의 함수를 사용하여이 작업을 수행하지만 for 루프 내부의 컨텍스트에 의존 할 수는 없습니다. 당신은 당신이 정의되지 않습니다 magicerrresults라는 변수를 전달 arer 때문에

답변

5

errresults은 정의되지 않습니다. 당신이 그것에서 아무것도 반환하지 않기 때문에

MyModel.finderrresult를받는 함수를 반환해야 magic의 결과로 아무것도 할 수 없습니다.

function doSomething(param) { 
    var magic = function(context) { 
     // return a function here 
     return function(err, results) { 
      if(err) { console.log('fail'); } 
      else { 
       // do the magic with context and results 
      } 
     }; 
    } 

    for(var i=0; i < 5; i++) { 
     var myObject = {'secret' : i}; 
     // do not pass err or results to magic 
     // they are not defined anywhere in this scope 
     MyModel.find({number:param[i]}, magic(myObject)); 
    } 
} 
+0

예! 나는 여전히 마스터하려고 노력하고있는 자바 스크립트의 기이함. 감사. – Greg