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

Node.jsを使用した複数のMySQLクエリへのアプローチ

    運命のピラミッドを避けるべきです:

    var express = require('express');
    var Q = require('Q');
    var app = express();
    
    app.get('/',function(req,res){
        var mysql      = require('mysql');
    
        var connection = mysql.createConnection({
            host     : 'localhost',
            user     : 'root',
            password : ''
        });
    
        connection.connect();
    
        function doQuery1(){
            var defered = Q.defer();
            connection.query('SELECT 1 AS solution',defered.makeNodeResolver());
            return defered.promise;
        }
    
        function doQuery2(){
            var defered = Q.defer();
            connection.query('SELECT 2 AS solution',defered.makeNodeResolver());
            return defered.promise;
        }
    
        Q.all([doQuery1(),doQuery2()]).then(function(results){
            res.send(JSON.stringify(results[0][0][0].solution+results[1][0][0].solution));
            // Hint : your third query would go here
        });
    
        connection.end();
    
    });
    
    app.listen(80);
    console.log('Listening on port 80');
    

    このサンプルは、2つの独立した計算値に依存する結果を示しています。これらの値のそれぞれは、doQuery1およびdoQuery2で照会されます。それらは順番に実行されますが、非同期で実行されます。

    次に、Q.all(... これは基本的に、成功時に「then」コールバックを呼び出します。そのコールバック内で、計算が行われます。

    約束の使用(詳細: Github Q:Javascriptの約束 および wikipedia )コードをよりクリーンにし、結果の計算と処理を分離し、物事を移動させることを許可します。

    計算の前提条件として「doQuery3」を追加するのがいかに簡単かを見てください!

    そして、サンプルコードに続く「package.json」を以下に示します。

    {
        "name": "hello-world",
        "description": "hello world test app",
        "version": "0.0.1",
        "private": true,
        "dependencies": {
            "express": "3.2.0",
            "q": "0.9.3",
            "mysql":"2.0.0-alpha7"
        }
    }
    


    1. 複数の列を持つMySQLカーソルベースのページネーション

    2. 主キーを整数からシリアルに変換する方法は?

    3. 断続的なODBC接続の失敗

    4. PythonでMySQLデータベースに接続するにはどうすればよいですか?