【发布时间】:2017-09-04 12:24:47
【问题描述】:
我正在尝试为承诺之外的变量设置一个值。
但是当我检查它打印undefined的值时,
我在承诺之外定义了变量,所以我不明白为什么它是undefined
这是我的代码,希望你能帮助我:
UserSchema.statics.findByToken = function (token) {
var User = this;
var decoded;
try{
decoded = jwt.verify(token, 'secret');
} catch (err){
if(err.name === 'TokenExpiredError'){
var refreshToken;
User.findOne({
'tokens.token': token,
'tokens.access': 'auth'
}).then( (user) => {
User.findOne({
'tokens.token': token,
'tokens.access': 'auth'
}).then( (user) => {
var access = 'auth';
token = jwt.sign({_id: user._id.toHexString(), access}, 'secret', { expiresIn: 30 }).toString();
refreshToken = token; // set value to refreshToken
user.tokens.push({access, token});
user.save().then( () => {
token = refreshToken;
});
});
});
console.log(refreshToken); // refresh is undefined
return Promise.reject({errName: 'TokenExpiredError', token: refreshToken});
}
return Promise.reject();
}
return User.findOne({
_id: decoded._id,
'tokens.token': token,
'tokens.access': 'auth'
})
}
【问题讨论】:
标签: javascript node.js ecmascript-6