Mysql
 sql >> Base de données >  >> RDS >> Mysql

module de validation de connexion utilisateur simple avec nœud

Je pense que vous voudrez repenser votre application d'une manière plus semblable à un nœud (c'est-à-dire qui reconnaît que beaucoup/la plupart des choses se produisent de manière asynchrone, donc vous ne "revenez" généralement pas d'une fonction comme celle-ci, mais faites un rappel de Je ne sais pas ce que vous prévoyez d'obtenir de node-mysql, mais j'utiliserais probablement simplement le module mysql simple. Le code suivant n'est probablement pas tout à fait ce que vous voulez, mais j'espère que vous y réfléchirez correctement.

Notez que l'utilisation de 'return' ci-dessous ne renvoie pas réellement un résultat (le rappel lui-même ne devrait rien renvoyer, et donc c'est comme retourner undefined. Les instructions de retour sont là pour que vous quittiez la fonction, ce qui vous évite de fastidieux if/ blocs d'autre.

J'espère que cela vous aidera, mais je suggérerais d'examiner divers projets de nœuds sur github pour avoir une meilleure idée de la nature asynchrone de l'écriture pour le nœud.

function validate(username, password, callback){
    var connection = mysql.createConnection({ user:'foo',
                            password: 'bar',
                            database: 'test',
                            host:'127.0.0.1'});

    connection.connect(function (err){
        if (err) return callback(new Error('Failed to connect'), null);
        // if no error, you can do things now.

        connection.query('select username,password from usertable where username=?',
                username,
                function(err,rows,fields) {
                    //  we are done with the connection at this point), so can close it
                    connection.end();

                    // here is where you process results
                    if (err)
                        return callback(new Error ('Error while performing query'), null);
                    if (rows.length !== 1)
                        return callback(new Error ('Failed to find exactly one user'), null);

                    // test the password you provided against the one in the DB.
                    // note this is terrible practice - you should not store in the
                    // passwords in the clear, obviously. You should store a hash,
                    // but this is trying to get you on the right general path

                    if (rows[0].password === password) {
                        // you would probably want a more useful callback result than 
                        // just returning the username, but again - an example
                        return callback(null, rows[0].username);
                    } else {
                        return callback(new Error ('Bad Password'), null);
                    }

                });


    });
};