【问题标题】:How to obtain parent child relationship in EXPRESSJS/MYSQL?EXPRESSJS/MYSQL中如何获取父子关系?
【发布时间】:2017-05-19 14:35:08
【问题描述】:

我有这样的表:

  • 没有
  • 字母表

没有表包含 (1,2,3,4)

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

这是我的 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();

我需要在两个查询之间建立父子关系,没有表作为父级,字母作为子级。

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

    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

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

【问题讨论】:

    标签: mysql node.js express parent-child hierarchical-data


    【解决方案1】:

    您可以使用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');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多