sql >> Database teknologi >  >> RDS >> Mysql

Returner funktion Javascript

Ja det gør det, du skal bare ændre den måde, du tænker på kode. I stedet for at skrive email_already_exists_in_mysql du skal i stedet skrive en funktion kaldet 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();
            }
        }
    )
}

Så i stedet for at skrive dette:

//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
}

du skriver det sådan her i stedet:

//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
})}

Nu kan du spørge dig selv, hvad hvis der er en anden efter det? Nå, du skal ændre if_email_already_exists_in_mysql funktion til at opføre sig som og if...else i stedet for bare og 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();
            }
        }
    )
}

så du kan kalde det sådan her:

//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
    }
)}

Du kan skrive asynkron kode for at gøre stort set alt, hvad almindelig kode kun kan gøre i stedet for at returnere en værdi, du sender i et tilbagekald. Husk:

retur i synkron kode ==passerer i tilbagekald i asynkron kode.

Kodestrukturen skal derfor være anderledes, men som jeg viste ovenfor, kan den logik, du vil implementere, være nøjagtig den samme.




  1. Konvertering mellem dato- og klokkeslætsdatatyper i SQL Server (T-SQL-eksempler)

  2. TNS-12505:TNS:listener kender i øjeblikket ikke til SID givet i forbindelsesbeskrivelsen

  3. Evalueringsrækkefølge for Oracle SQL-sætning

  4. Sådan inkluderes ekskluderede rækker i RETURNING from INSERT ... ON CONFLICT