EXPRESSJS/MYSQL如何获取父子关系?

How to obtain parent child relationship in EXPRESSJS/MYSQL?

我有 table 这样的:

table 包含 (1,2,3,4)

字母表 table 包含(苹果、球、猫、狗)

这是我的 js 文件:

var connection = require('../connection');

function Todo() {
    this.get = function(res) {
        connection.acquire(function(err, con) {
            con.query('select * from no', function(err, result) {
                for(var key in result) {
                    var no = result[key].number;
                    console.log(no); 
                    con.query('select * from alphabets', function(err, result2) {
                        for(var key in result2) {
                            var alph = result2[key].alphabets;
                            console.log(no+"."+alph);
                        }
                        console.log('\n');
                        });
                    }
                    con.release();
                    res.send(result);
                });
            });
        };
    }
module.exports = new Todo();

我需要在两个查询之间建立父子关系 no table 作为父项,字母表作为子项。

我在命令提示符下的预期输出:

    1.apple
    1.ball
    1.cat
    1.dog

    2.apple
    2.ball
    2.cat
    2.dog

    3.apple
    3.ball
    3.cat
    3.dog

    4.apple
    4.ball
    4.cat
    4.dog

我得到的输出:

    1
    2
    3
    4
    4.apple
    4.ball
    4.cat
    4.dog


    4.apple
    4.ball
    4.cat
    4.dog


    4.apple
    4.ball
    4.cat
    4.dog


    4.apple
    4.ball
    4.cat
    4.dog

我想知道为什么第一个查询 运行 异步并完成它循环。如何在两个查询之间创建关系,以便查询 运行 同步避免最后一个值 no table 在字母 table?

处重复

您可以 运行 使用 SynJS 同步回调函数。我稍微重构了你的代码,这是一个工作版本:

global.SynJS = global.SynJS || require('synjs');
var mysql      = require('mysql');

var connection = mysql.createConnection({
    database : 'tracker',
    user     : 'tracker',
    password : 'tracker123'
});


var myFunction1=function( mysql, connection ) {

    connection.connect(function(err) {
        SynJS.resume(_synjsContext);
    });
    SynJS.wait();


    var result;
    connection.query('select * from no', function(err, res) {
        result = res;
        SynJS.resume(_synjsContext);
    });
    SynJS.wait();

    for(var key in result)
    {
        var no = result[key].number;
        console.log(no);
        var result2=null;
        connection.query('select * from alphabets', function(err, res2) {
            result2 = res2;
            SynJS.resume(_synjsContext);
        });
        SynJS.wait();

        for(var key in result2)
        {
            var alph = result2[key].alphabets;
            console.log(no+"."+alph);
        }
        console.log('\n');

    }
};

SynJS.run(myFunction1,null, mysql, connection, function (ret) {
    console.log('done');
});