这个
userInfo
在点(2)处未定义,因为出现错误(在其正下方的行上报告,这是以前记录的消息)。错误块不会离开该函数,因此它会继续运行,并使用无效的
用户信息
对象
但这并不能解释为什么回调会被调用两次——一次是使用有效的
用户信息
还有一次
err
. 文档(尽管不是示例)
AuthenticationClient.getProfile()
表示它返回承诺(或
未定义
-虽然它没有说为什么它会回来
未定义
),所以我想知道这是否会导致两次回调。
由于它返回一个承诺,您可以省略回调函数,只需使用如下方式处理它:
function getAccountBalance(app) {
let accountowner = app.getArgument(PARAM_ACCOUNT_OWNER);
console.log('accessToken: ' + app.getUser().accessToken);
var accessToken = app.getUser().accessToken;
auth0.getProfile( accessToken )
.then( userInfo => {
console.log('getAccountBalance userInfo:' + userInfo)
// query firestore based on user
var transactions = db.collection('bank').doc(userInfo.email)
.db.collection('accounts').doc(accountowner)
.collection('transactions');
return transactions.get();
})
.then( snapshot => {
var workingbalance = 0
snapshot.forEach(doc => {
workingbalance = workingbalance + doc.data().amount;
});
app.tell(accountowner + " has a balance of $" + workingbalance)
})
.catch( err => {
console.error('Error:', err );
app.tell('I was unable to retrieve your balance at this time.')
})
});
}