sql >> Databasteknik >  >> RDS >> Mysql

Tillvägagångssätt för flera MySQL-frågor med Node.js

Man bör undvika undergångspyramiden:

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');

Detta exempel visar ett resultat som beror på 2 oberoende beräknade värden. Vart och ett av dessa värden efterfrågas i doQuery1 och doQuery2. De exekveras i sekvens, men asynkront.

Därefter kan du se Q.all(... som i princip kallar "då" callback på framgång. Inom den återuppringningen görs beräkningen.

Använda löften (detaljer :Github Q:löfte för Javascript och wikipedia ) tillåter att göra din kod renare, separera beräkning och hantering av resultat och flytta runt saker.

Titta på hur lätt det skulle vara att lägga till "doQuery3" som förutsättning för din beräkning!

Och nedan "package.json" som hör till exempelkoden:

{
    "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. TNSPING OK men sqlplus ger ORA-12154?

  2. Oracle-proceduren returnerar inte resultat när den körs från skriptuppgiften på SSIS

  3. På uppgraderingsmetoden anropas inte i android sqlite

  4. Hur konverterar man en bild till byte-array med hjälp av javascript endast för att lagra bilden på sql-servern?