2017-07-02 170 views
0

我是nodejs的新手,并且在回调中挣扎。我有一个回调块,期望从​​一个子函数的值,但是,我无法理解为什么该值不会返回到父块 - user.getUser。帮助将不胜感激。无法获取回调函数以将值返回父函数

子功能

getUser(userEmail) { 
    logger.info('fetching details for user '+userEmail) 
    dynamoModel.get(userEmail, function(err, userModel){ 
    if(err) logger.error(err); 
    logger.info(userModel); 
    return userModel; 
}); 
} 

回调

user.getUser(email, function(err, userModel){ 
     logger.info('parent block->'+userModel); 
    }); 

输出

info: fetching details for user dhdhd 
info: email=dhdhd, password=ttjtkt, lastLogin=1498963442595, loginVendor=local, createdAt=Sun Jul 02 2017 12:44:02 GMT+1000 (AEST), updatedAt=Sun Jul 02 2017 12:44:02 GMT+1000 (AEST) 
info: fetching details for user dhdhd 

另外,我不知道为什么到的getUser函数的调用是发生多occations - 如从多个日志条目eveident -

info: fetching details for user dhdhd 

回答

0

你应该回调添加到的getUser()函数,所以一旦dynamoModel.get(...)完成,它就会被调用。

你在调用者中传递回调,但不在getUser(...)中使用它。在的getUser

返回值是毫无意义的,因为这是异步代码,结果将通过您传递回调接收。

getUser(userEmail, done) { 
    logger.info('fetching details for user '+userEmail) 
    dynamoModel.get(userEmail, done) 
} 

user.getUser(email, function(err, userModel){ 
    if(err) logger.error(err); 
    logger.info(userModel); 
    });