2017-07-02 12 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); 
    }); 

出力

getUserメソッド関数の呼び出しは、複数のoccationsが起こっている理由
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 

また、私は知らない - の複数のログエントリから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); 
    }); 
関連する問題