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

約束されたmysqlモジュールはNodeJSでどのように機能しますか?

    メソッドが単一の引数を持つノード「errback」である場合、thenにパラメーターがない状態で解決されます または、errで拒否されます それに渡されます。約束の場合は、.errorでキャッチできます。 または、Promise.OperationalErrorでcatchを使用します 。

    簡単なアプローチは次のとおりです。

    function getConnection(){
        var connection = mysql.createConnection({
          host     : 'localhost',
          user     : 'me',
          password : 'secret'
        });
        return connection.connectAsync().return(connection); // <- note the second return
    }
    
    getConnection().then(function(db){
        return db.queryAsync(....);
    }).error(function(){
       // could not connect, or query error
    });
    

    これが接続の管理用である場合-Promise.usingを使用します -APIのサンプルは次のとおりです:

    var mysql = require("mysql");
    // uncomment if necessary
    // var Promise = require("bluebird");
    // Promise.promisifyAll(mysql);
    // Promise.promisifyAll(require("mysql/lib/Connection").prototype);
    // Promise.promisifyAll(require("mysql/lib/Pool").prototype);
    var pool  = mysql.createPool({
        connectionLimit: 10,
        host: 'example.org',
        user: 'bob',
        password: 'secret'
    });
    
    function getSqlConnection() {
        return pool.getConnectionAsync().disposer(function(connection) {
            try {
                connection.release();
            } catch(e) {};
        });
    }
    
    module.exports = getSqlConnection;
    

    これで可能になります:

    Promise.using(getSqlConnection(), function(conn){
        // handle connection here, return a promise here, when that promise resolves
        // the connection will be automatically returned to the pool.
    });
    



    1. MySQLで、月の週を返す方法は?

    2. SQLServerピボットと複数結合

    3. LINQ to SQL Take w / o Skipは、複数のSQLステートメントを引き起こします

    4. RHEL、Rocky、AlmaLinuxでMySQLレプリケーションを設定する方法