Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mô-đun xác thực đăng nhập người dùng đơn giản với nút

Tôi nghĩ bạn sẽ muốn xem xét lại ứng dụng của mình theo một cách giống nút hơn (tức là một cách nhận ra rằng nhiều / hầu hết mọi thứ xảy ra không đồng bộ, vì vậy bạn thường không "quay lại" từ một hàm như thế này, nhưng thực hiện gọi lại từ Nó. Không chắc bạn định lấy gì từ node-mysql, nhưng có lẽ tôi sẽ chỉ sử dụng mô-đun mysql thuần túy. Đoạn mã sau rất có thể không hoàn toàn là những gì bạn muốn, nhưng hy vọng sẽ giúp bạn suy nghĩ đúng về nó.

Lưu ý rằng việc sử dụng 'return' bên dưới không thực sự trả về một kết quả (bản thân lệnh gọi lại không nên trả về bất kỳ thứ gì và do đó nó giống như trả về không xác định. Các câu lệnh trả về ở đó để bạn thoát khỏi hàm, điều này giúp tiết kiệm rất nhiều nếu / các khối khác.

Hy vọng điều này sẽ hữu ích, nhưng tôi khuyên bạn nên xem xét các dự án nút khác nhau trên github để có cảm nhận tốt hơn về bản chất không đồng bộ của việc viết cho nút.

Hàm
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. dữ liệu mùa xuân JPA - mysql - findById () trống trừ khi findAll () được gọi trước đó

  2. Mysql chọn riêng biệt

  3. Thêm giá trị foreach vào Ajax

  4. Định dạng ngày trong MySQL SELECT dưới dạng ISO 8601

  5. LỖI:Lỗi 1005:Không thể tạo bảng 'cat10e.recording' (errno:150)