如何在节点js中以顺序方式执行两个查询?

时间:2016-05-19 21:12:36

标签: javascript mysql node.js

我是节点j的初学者。我正在使用mySQL数据库。我有一个查询,它返回一个数据集,然后我使用for循环访问该数据集的每个元素。问题是在循环内部我为数据集的每个元素创建了一个新查询,我不知道为什么它不能正常工作。第二个查询在for循环结束之前不会返回任何内容,我希望它为前一个第一个数据集的每个元素返回一个值。任何帮助都会感激不尽,非常感谢。

Cristina Osuna

这里是代码:

first query: geneModel.getGenesRefPut



second query: geneModel.getGenesRefClass

---------------------------------------
/* GET genes page. */

router.get('/genes', function(req, res, next) {


    var listTotal=[];


    geneModel.getGenesRefPut(function(error, data)

    {
        for (i = 0; i < data.length; i++) {     

            var classgene = '';
            var custom_gene = {};

            if (data[i]['Type_Gene'] == "reference") {

                custom_gene = {Name_Gene: data[i]['Name_Gene'], Alias_Gene: data[i]['Alias_Gene'], Id_Plants: data[i]['Id_Plants'], Type_Gene: data[i]['Type_Gene'], Name_SpeciePl:  data[i]['Name_SpeciePl']};

                var id = data[i]['Id_Genes'];

                geneModel.getGenesRefClass(id, function(error, data2)
                {
                    classgene = data2[0]['Class_Name'];
                    custom_gene['classgene'] = classgene;

                });

                listTotal.push(custom_gene);

            }

        }
        console.log(listTotal);
    });

    res.render('genesDetails', {listTotal: listTotal}); 
});

0 个答案:

没有答案