2016-06-10 3 views
0

내 사용자 개체에 create 메서드를 만들 싶습니다. 이 함수는 사용자를 반환해야합니다. 그러나이 예제에서는 텍스트 만 반환합니다.async.js 반환 값 양식 마지막 함수

그러나 나는 폭포에 대한 반환 값을 어떻게 알지 못합니다.

내가 실행하면

console.log(User.find("575578a9f95d6de1354327ef")); 

내 출력에 '정의되지 않은'하지만 내가 얻을 원한다면 할 수있는 내가해야 무엇 '이 값을 돌려줍니다 갈까요 기능 찾기'를 제외하고있어 '기능의 발견은이 돌아 갈까요 내 출력

User = { 
    collectionName: 'users', 

    find: function(id){ 
     async.waterfall(
      [ 
      function(callback) { 
       MongoClient.connect('mongodb://127.0.0.1:27017/lingogo', function(err,db) { 
        if(err) { throw err} 
        callback(null, db, id); 

       }); 
      }, 
      function(db,id, callback) { 
       var collection = db.collection(User.collectionName); 
       collection.find({'_id': ObjectID(id)}).toArray(function (err, result) { 

        if (err) { throw err }; 

        if (result[0] && result[0]._id != '') { 
         return callback(null,result[0]); 
        } 

        return callback(null,null); 
       }) 
      }, 
      ], 
      function (err, user) { 

       return 'function find shoud return this value'; 
      } 
     ); 
    } 
} 
console.log(User.find("575578a9f95d6de1354327ef")); 
+0

처럼 호출 할 필요가

find: function (id, callback) { async.waterfall(..., function (...) { callback(null, return_value); }); } 

각'.find' 나쁜 생각하기 전에 연결합니다. –

답변

1

기능 find에 값 '텍스트는 waterfall의 콜백에서 부르는 너무 콜백이 있어야합니다. 비동기 함수에서 동 기적으로 값을 반환 할 수 없습니다.

User.find("575578a9f95d6de1354327ef", function (err, return_value) { 
    console.log(return_value); 
}); 
+0

시도해 보았지만 오류가 발생했습니다. TypeError : 정의되지 않은 함수는 함수가 아닙니다. 원하는대로, 내 업데이트를 볼 수 있습니다. http://pastebin.com/qVXTpNWS –

+0

게시물에 업데이트가 표시되지 않습니다. –

+0

업데이트는 pastebin.com/qVXTpNWS –