sql >> Databasteknik >  >> RDS >> Mysql

Returnera funktion Javascript

Ja det gör det, du behöver bara ändra ditt sätt att tänka på kod. Istället för att skriva email_already_exists_in_mysql du bör istället skriva en funktion som heter 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();
            }
        }
    )
}

Då istället för att skriva detta:

//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 så här istället:

//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 fråga dig själv, vad händer om det finns en annan efter det? Tja, du måste ändra if_email_already_exists_in_mysql funktion för att bete sig som och if...else istället för just och 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å att du kan kalla det så här:

//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 skriva asynkron kod för att göra i stort sett allt som vanlig kod bara kan göra istället för att returnera ett värde du skickar i en återuppringning. Kom ihåg:

retur i synkron kod ==passerar i återuppringningar i asynkron kod.

Kodstrukturen måste därför vara annorlunda men som jag visade ovan kan logiken du vill implementera vara exakt densamma.




  1. MySQL eller PHP lägger till en  när £ används

  2. Exkludera en kolumn med SELECT * [utom kolumnA] FRÅN tabellA?

  3. cURL och PHP visar 1

  4. Uppdatera en MySQL-tabell med rekordrankningar inom grupper