Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kembalikan fungsi Javascript

Ya, Anda hanya perlu mengubah cara berpikir Anda tentang kode. Alih-alih menulis email_already_exists_in_mysql Anda sebaiknya menulis fungsi yang disebut 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();
            }
        }
    )
}

Kemudian alih-alih menulis ini:

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

Anda menulisnya seperti ini sebagai gantinya:

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

Sekarang, Anda mungkin bertanya pada diri sendiri, bagaimana jika ada hal lain setelah itu? Nah, Anda perlu memodifikasi if_email_already_exists_in_mysql berfungsi untuk berperilaku seperti dan if...else bukannya adil dan 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();
            }
        }
    )
}

sehingga Anda dapat menyebutnya seperti ini:

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

Anda dapat menulis kode async untuk melakukan hampir semua hal yang hanya dapat dilakukan oleh kode biasa alih-alih mengembalikan nilai yang Anda berikan dalam panggilan balik. Ingat:

kembali dalam kode sinkron ==meneruskan panggilan balik dalam kode asinkron.

Oleh karena itu, struktur kode harus berbeda tetapi seperti yang saya tunjukkan di atas, logika yang ingin Anda terapkan bisa sama persis.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SUM() Fungsi di MySQL

  2. Perlu mengeluarkan productdata dari database mysql

  3. Cara membuat arsitektur titik waktu di MySQL

  4. Cara mendapatkan hanya baris pertama dari ResultSet

  5. Menghapus carriage return di Mysql DB