sql >> Databáze >  >> RDS >> Mysql

jednoduchý modul pro ověření přihlášení uživatele s uzlem

Myslím, že budete chtít přehodnotit svou aplikaci způsobem podobným uzlu (tj. způsobem, který rozpozná, že mnoho/většina věcí se děje asynchronně, takže se obvykle „nevracíte“ z funkce, jako je tato, ale provádíte zpětné volání z it. Nejste si jisti, co máte v plánu získat z node-mysql, ale pravděpodobně bych použil pouze prostý modul mysql. Následující kód s největší pravděpodobností stále není úplně to, co chcete, ale doufejme, že vás přiměje přemýšlet o něm správně.

Všimněte si, že použití 'return' níže ve skutečnosti nevrací výsledek (samotné zpětné volání by nemělo nic vracet, a proto je to jako vracející nedefinované. Příkazy return jsou zde, takže funkci ukončíte, což ušetří spoustu únavného if/ jinak blokuje.

Doufám, že to pomůže, ale doporučoval bych podívat se na různé projekty uzlů na githubu, abyste získali lepší představu o asynchronní povaze psaní pro 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 #1093 - V klauzuli FROM nemůžete určit cílovou tabulku 'dárky' pro aktualizaci

  2. Jak najít řazení v MySQL

  3. Tlačítko Přidat PHP pro zobrazení veškerého obsahu celého záznamu MySQL

  4. Vypište všechny názvy indexů, názvy sloupců a název jejich tabulky databáze PostgreSQL