2017-10-03 12 views
0

私は、非公式のFacebookチャットAPI(https://github.com/Schmavery/facebook-chat-api)とNode.jsを使用して、単純なメッセンジャーボットを作成しています。変数をコールバックに渡す - nodejs

今のところ、特定の時間に特定のユーザーにメッセージを送信しています。

if(msgdate.getTime() <= currdate.getTime()){ 

    console.log(alarms[i].message); 
    // output: test 

    api.getUserID(alarms[i].user, (err, users) => { 
     if(err) return console.error(err); 

     api.sendMessage(alarms[i].message, users[0].userID); 
     // TypeError: Cannot read property 'message' of undefined 
    }); 
} 

そして、私の質問は::ここに私のコードの一部だ、私は、このコールバックにアラーム配列を渡すことができるか、私は特定のユーザーにメッセージを送信することができるだろうか?

+0

'async/await'を試してみてください。それが役立つかどうかを見てください。 –

答えて

1

iはどこかで変数を変更するように見え、コールバックが呼び出されたときのためにalarms[i]は定義されていません。あなたは新しい変数にalarms[i]を保存し、コールバックにそれを使用する必要があります。

let alarm = alarms[i]; 
api.getUserID(alarm.user, (err, users) => { 
    if(err) { 
    return console.error(err); 
    } 
    api.sendMessage(alarm.message, users[0].userID); 
}); 
0

あなたが外ループに使用しているように見えます。そのようにvarを渡してみてください。

var alarm = alarm[i]; 
(function (alarm) { 
    if(msgdate.getTime() <= currdate.getTime()){ 

    console.log(alarm.message); 
    // output: test 

    api.getUserID(alarm.user, (err, users) => { 
     if(err) return console.error(err); 

     api.sendMessage(alarm.message, users[0].userID); 
     // TypeError: Cannot read property 'message' of undefined 
    }); 
})(alarm); 

多分、他のヴァールも渡す必要があります。コンマやその他の変数を入力してください:

(function (alarm, user){ 
    // your code here 
})(alarm, user); 
関連する問題