2017-10-24 12 views
0

私はnode.jsでmongooseを使っています。私は各ユーザのトークンを生成しようとしています。ノードJsの約束

ここでは、最初のreturn文と2番目のreturn文で何が起こっているのか理解できません。

誰かがコントロールフローを手伝ってもらえますか?

UserSchema.methods.generateAuthToken = function(){ 
var user = this; 
var access = 'auth'; 
var token =jwt.sign({ _id : user._id.toHexString(),access},'123abc'); 
user.tokens.push({access,token}); 
    return user.save().then(()=>{ 
     return token; 
    }) 
}; 
+0

背景については、[this](https://davidwalsh.name/promises)を参照してください。 –

答えて

0
UserSchema.methods.generateAuthToken = function(){ // ES5 classic function 
var user = this; // you keep the context in a var 
var access = 'auth'; 
var token = jwt.sign({ _id : user._id.toHexString(),access},'123abc'); // you call jwt.sign() function 
user.tokens.push({access,token}); // you push some data in user.tokens array 
    return user.save().then(() => { // Promise then ES6 arrow function equivalent to function(){ /* do something */ }; 
     return token; // you return token to your promise 
    }); // you return token through user.save() 
}; 

より:

約束:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

ES6アロー機能:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

はそれを明確にすることでしょう願っています。

0

user.saveは非同期呼び出しです。最初のreturn文は、結果が未知であることを呼び出し元に知らせる約束を返します。 2回目の返品は、約束通り返されている実際の値です。約束について少し調べたいかもしれません。