sql >> データベース >  >> RDS >> Mysql

関数Javascriptを返す

    はい、そうです。コードについての考え方を変える必要があります。 email_already_exists_in_mysqlを書く代わりに 代わりに、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();
                }
            }
        )
    }
    

    次に、これを書く代わりに:

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

    代わりに次のように記述します:

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

    さて、あなたは自分自身に尋ねるかもしれません、その後に他に別のものがあったらどうしますか?さて、あなたはif_email_already_exists_in_mysqlを変更する必要があります if...elseのように動作する関数 と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();
                }
            }
        )
    }
    

    次のように呼び出すことができます:

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

    コールバックで渡した値を返す代わりに、通常のコードでしか実行できないほとんどすべてのことを実行する非同期コードを記述できます。覚えておいてください:

    戻る 同期コードで==コールバックを渡す 非同期コードで。

    したがって、コード構造は異なる必要がありますが、上記で示したように、実装するロジックはまったく同じにすることができます。




    1. mysqlプロセスを停止できません

    2. MariaDBサーバー10.5の新機能

    3. 別のドロップダウンに基づいてドロップダウンにデータを入力するための最良かつ最も簡単な方法は何ですか

    4. MySQLWorkbenchセッションはデータベースの更新を認識しません