sql >> Database teknologi >  >> RDS >> Mysql

simpelt brugerlogin valideringsmodul med node

Jeg tror, ​​du vil gentænke din app til en mere node-lignende måde (dvs. en, der genkender, at mange/de fleste ting sker asynkront, så du normalt ikke "vender tilbage" fra en funktion som denne, men laver et tilbagekald fra Det. Ikke sikker på, hvad du planlægger at få fra node-mysql, men jeg ville nok bare bruge det almindelige mysql-modul. Følgende kode er stadig højst sandsynligt ikke helt, hvad du ønsker, men vil forhåbentlig få dig til at tænke rigtigt over det.

Bemærk, at brugen af ​​'retur' nedenfor faktisk ikke returnerer et resultat (selve tilbagekaldet burde ikke returnere noget, og dermed er det ligesom at returnere udefineret. Returudsagn er der, så du afslutter funktionen, hvilket sparer en masse kedeligt if/ andet blokerer.

Håber dette hjælper, men jeg vil foreslå at se på forskellige nodeprojekter på github for at få en bedre fornemmelse for den asynkrone karakter af at skrive til node.

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

                });


    });
};



  1. Mysql join og sum fordobler resultatet

  2. #1064 - Du har en fejl i din SQL-syntaks; tjek den manual, der svarer til din MySQL-serverversion

  3. autofuldførelse viser alle poster, søger ikke

  4. hvordan man opdaterer data ved hjælp af dvaleforespørgsel med overordnet egenskab i where-klausulen