Quel est l'attribut "done" dans NodeJS?
Je suis codage de la connexion locale dans NodeJS suivant ce tutoriel:
https://scotch.io/tutorials/easy-node-authentication-setup-and-local
Dans le fichier config/passport.js
function(req, email, password, done){
process.nextTick(function(){
User.findOne({'local.email' : email}, function(err, user){
if(err)
return done(err);
if (user){
return done(null, false, req.flash('signupMessage', 'message'));
}
Je suis recrue dans NodeJS et Javascript, et je ne comprends pas comment une valeur comme "fait" peut être une fonction (retour fait(err)). Est toute la fonction du système?
Merci beaucoup!
source d'informationauteur David Luque
Vous devez vous connecter pour publier un commentaire.
done
est un rappel que vous devez appeler une fois que vous avez terminé votre travail. Comme vous pouvez le voir, il est donné dans la première ligne de votre code:Cela signifie qu'en plus de la demande entrante vous obtenez spécifiés par l'utilisateur
email
etpassword
. Maintenant, vous devez faire ce que vous devez faire pour vérifier la connexion. En quelque sorte, vous devez dire à Passeport si vous avez réussi ou pas.Normalement, vous pouvez utiliser une valeur de retour pour le présent, mais dans ce cas, le Passeport auteur pensé à la possibilité que votre enregistrement peut être asynchrone, par conséquent, avec une valeur de retour ne fonctionne pas.
C'est pourquoi un rappel est utilisé. Le plus souvent les rappels sont appelés
callback
mais c'est juste pour des raisons de commodité, il n'y a pas de raison technique pour le faire. Dans ce cas, car le rappel est utilisé pour montrer que vous êtes faitle Passeport auteur a suggéré de l'appelerdone
.Maintenant, vous pouvez soit appeler
done
avec une erreur si les informations d'identification de validation a échoué, ou avec les paramètres appropriés pour montrer qu'il a réussi.Cela fonctionne parce que les fonctions sont soi-disant des citoyens de première classe en JavaScript, c'est à dire il n'y a pas de réelle différence entre le code et les données: En JavaScript, vous pouvez passer à des fonctions comme paramètres et valeurs de retour comme vous pouvez le faire avec les données.
Et c'est tout 🙂