Javascript 参数作为未定义传递
Javascript parameter getting passed as undefined
我目前正在使用 botkit-sms 发送和接收文本,与 mongoose 集成用于存储我的数据。我想根据用户的 phone 号码获取用户,因此在我的代码中我使用了一个控制器,该控制器应该通过 Mongoose 用户模式中的 phone 号码找到用户。但是,调用 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)
我目前正在使用 botkit-sms 发送和接收文本,与 mongoose 集成用于存储我的数据。我想根据用户的 phone 号码获取用户,因此在我的代码中我使用了一个控制器,该控制器应该通过 Mongoose 用户模式中的 phone 号码找到用户。但是,调用 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)