sql >> Databasteknik >  >> RDS >> Mysql

enkel valideringsmodul för användarinloggning med nod

Jag tror att du kommer att vilja ompröva din app till ett mer nodliknande sätt (dvs ett som känner igen att många/de flesta saker händer asynkront, så du brukar inte "återvända" från en funktion som denna, utan gör en återuppringning från det. Inte säker på vad du planerar att få från node-mysql, men jag skulle förmodligen bara använda den vanliga mysql-modulen. Följande kod är fortfarande med största sannolikhet inte helt vad du vill ha, men kommer förhoppningsvis få dig att tänka på det korrekt.

Observera att användningen av 'return' nedan faktiskt inte returnerar ett resultat (återuppringningen i sig bör inte returnera något, och därmed är det som att returnera odefinierat. Return-satserna finns där så du avslutar funktionen, vilket sparar mycket tråkigt om/ annat blockerar.

Hoppas detta hjälper, men jag skulle föreslå att du tittar på olika nodprojekt på github för att få en bättre känsla för den asynkrona karaktären av att skriva för nod.

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 Trigger för att förhindra INSERT under vissa förhållanden

  2. Extrahera Oracle LONG till sträng i VBA

  3. Varför stöder inte NHibernate batchning på MySql

  4. Oracle lägg till aktuellt datum automatiskt