我目前正在使用botkit-sms发送和接收文本,与mongoose集成在一起用于存储数据。我想根据用户的电话号码来获取用户,因此在我的代码中,我使用了一个控制器,该控制器应该在Mongoose用户架构中通过其电话号码来查找用户。但是,在调用getUserType时,未定义phoneNumber。有谁知道如何解决这一问题?我认为这可能与Javascript的异步性质有关,但是我仍然对该语言感到满意,因此不确定。

controller.hears(['HELPME'], 'message_received', (bot, message) => {
  bot.startConversation(message, (err, convo) => {
    var phoneNumber = message.user
    console.log('phone number defined here' + phoneNumber)
    Users.getUserType((err, user, phoneNumber) => {
      console.log('not getting a user back here' + user.type)
    })
  })
})


然后在我的user_controller中,我只有:

export const getUserType = (callback, phoneNumber) => {
  console.log('phone number is undefined here' + phoneNumber);
  User.findOne({ 'phoneNumber': phoneNumber }).exec(callback);
}


我将不胜感激!谢谢。

最佳答案

您仅将回调函数传递给getUserType,但是getUserType接受两个参数,因此,

改变这个:

Users.getUserType((err, user, phoneNumber) => {
  console.log('not getting a user back here' + user.type)
})




Users.getUserType((err, user, phoneNumber) => {
  console.log('not getting a user back here' + user.type)
}, phoneNumber)

09-25 20:40