Mysql
 sql >> база данни >  >> RDS >> Mysql

модул за валидиране на прост потребителски вход с възел

Мисля, че ще искате да преосмислите приложението си по начин, подобен на възел (т.е. такъв, който разпознава, че много/повечето неща се случват асинхронно, така че обикновено не се „връщате“ от функция като тази, а извършвате обратно извикване от Не съм сигурен какво планирате да получите от node-mysql, но вероятно просто бих използвал обикновения модул mysql. Следният код все още най-вероятно не е напълно това, което искате, но се надяваме, че ще ви накара да мислите за него правилно.

Имайте предвид, че използването на 'return' по-долу всъщност не връща резултат (самото обратно извикване не трябва да връща нищо и по този начин е като връщане на недефинирано. Изявленията за връщане са там, така че излизате от функцията, което спестява много досадни if/ else блокове.

Надявам се, че това помага, но предлагам да разгледате различни проекти за възли в github, за да получите по-добро усещане за асинхронния характер на писане за възел.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изпълня PHP, който се съхранява в MySQL база данни?

  2. Как да приложим метода bindValue в клауза LIMIT?

  3. Неправилен индекс на ред при групиране

  4. MySql:как да направите подзаявка и да преброите всички редове, където id е еднакъв в две таблици

  5. автоматично планира изпълнението на php скрипт в определено време