Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Funkcja powrotu JavaScript

Tak, wystarczy zmienić sposób myślenia o kodzie. Zamiast pisać email_already_exists_in_mysql zamiast tego powinieneś napisać funkcję o nazwie if_email_already_exists_in_mysql :

/* Executes callback if email
 * already exists in mysql:
 */
function if_email_already_exists_in_mysql (email,callback) {
    connection.query(
        'SELECT COUNT(*) AS nb FROM user WHERE emailUser = ' +
        connection.escape(email),

        function(err, rows, fields) {
            if(rows[0].nb != 0) {
                callback();
            }
        }
    )
}

Następnie zamiast pisać to:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else if(email_already_exists_in_mysql(email)) {
    //I do something
}

piszesz to tak:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else {if_email_already_exists_in_mysql(email),function(){
    //I do something
})}

Teraz możesz zadać sobie pytanie, co jeśli po tym będzie jeszcze jeden? Cóż, musisz zmodyfikować if_email_already_exists_in_mysql funkcja zachowywać się jak i if...else zamiast just i if :

function if_email_already_exists_in_mysql (email,callback,else_callback) {
    connection.query(
        'SELECT COUNT(*) AS nb FROM user WHERE emailUser = ' +
        connection.escape(email),

        function(err, rows, fields) {
            if(rows[0].nb != 0) {
                callback();
            }
            else if(else_callback) {
                else_callback();
            }
        }
    )
}

więc możesz to nazwać tak:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else {
    if_email_already_exists_in_mysql(email),function(){
        //I do something
    },
    // else
    function(){
        //I do something else
    }
)}

Możesz napisać kod asynchroniczny, aby zrobić prawie wszystko, co zwykły kod może zrobić tylko zamiast zwracać wartość, którą przekazujesz w wywołaniu zwrotnym. Pamiętaj:

powrót w kodzie synchronicznym ==przekazywanie w wywołaniach zwrotnych w kodzie asynchronicznym.

Dlatego struktura kodu musi być inna, ale jak pokazałem powyżej, logika, którą chcesz zaimplementować, może być dokładnie taka sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Modele Django:domyślna wartość dla kolumny

  2. Dwie wstawki w PHP/MySQL przy użyciu LAST_INSERT_ID() i wierszy z innej tabeli

  3. Laravel 5.1 — Sprawdzanie połączenia z bazą danych

  4. Jak połączyć dwa stoły za pomocą ssp.class.php

  5. Pobieranie danych z Mysql DB do listView przy użyciu JSON i PHP