【问题标题】:Javascript parameter getting passed as undefinedJavascript参数作为未定义传递
【发布时间】:2017-02-15 19:07:46
【问题描述】:

我目前正在使用 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);
}

如果有任何帮助,我将不胜感激!谢谢。

【问题讨论】:

    标签: javascript mongodb asynchronous mongoose botkit


    【解决方案1】:

    您只是将回调函数传递给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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 1970-01-01
      • 2021-10-28
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2019-10-18
      相关资源
      最近更新 更多