2017-10-24 3 views
0

Ich arbeite mit dem Mungo mit node.js und ich versuche Tokens für jeden Benutzer zu generieren.Node Js Promises

Hier kann ich nicht verstehen, was für die erste return-Anweisung und für die zweite return-Anweisung passiert.

Könnte mir jemand mit dem Kontrollfluss helfen.

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

Siehe [this] (https://davidwalsh.name/promises) für etwas Hintergrund. –

Antwort

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() 
}; 

Mehr:

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

ES6 Pfeil Funktion: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Hoffe, dass es klar sein werde.

0

user.save ist ein asynchroner Aufruf. Die erste return-Anweisung gibt ein Versprechen zurück, das dem Aufrufer mitteilt, dass das Ergebnis noch nicht bekannt ist. Die zweite Rendite ist der tatsächliche Wert, den Sie durch das Versprechen zurückgeben. Vielleicht möchten Sie etwas über etwas versprechen.