sql >> Base de Datos >  >> RDS >> Mysql

módulo de validación de inicio de sesión de usuario simple con nodo

Creo que querrá repensar su aplicación de una manera más parecida a un nodo (es decir, una que reconozca que muchas/la mayoría de las cosas suceden de forma asíncrona, por lo que generalmente no está "regresando" de una función como esta, pero haciendo una devolución de llamada desde No estoy seguro de lo que planea obtener de node-mysql, pero probablemente solo usaría el módulo mysql simple. El siguiente código probablemente no sea del todo lo que desea, pero espero que lo haga pensar correctamente.

Tenga en cuenta que el uso de 'return' a continuación en realidad no devuelve un resultado (la devolución de llamada en sí no debería devolver nada y, por lo tanto, es como devolver indefinido. Las declaraciones de devolución están ahí para que salga de la función, lo que ahorra mucho tedioso if/ más bloques.

Espero que esto ayude, pero sugeriría mirar varios proyectos de nodos en github para tener una mejor idea de la naturaleza asíncrona de escribir para nodos.

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

                });


    });
};