Javascript NodeJs-错误:发送后无法设置标题&TypeError:req.next不是函数

Javascript NodeJs-错误:发送后无法设置标题&TypeError:req.next不是函数,javascript,node.js,nodes,Javascript,Node.js,Nodes,我试图从数据库mysql中得到一些结果。我正在调用一个方法插入数据库,另一个方法读取我之前插入的内容 我这样做是因为node.js不能同步工作。这是我的代码: exports.list = function(req, res){ var moduleRows; req.getConnection(function(err,connection){ var query = connection.query('SELECT * FROM questions WHERE m

我试图从数据库mysql中得到一些结果。我正在调用一个方法插入数据库,另一个方法读取我之前插入的内容

我这样做是因为node.js不能同步工作。这是我的代码:

exports.list = function(req, res){

  var moduleRows;

  req.getConnection(function(err,connection){
        var query = connection.query('SELECT * FROM questions WHERE module_id = ?',[X],function(err,rows)
        {
            for(var i = 0;i < rows.length;i++){
                moduleRows = rows[i];
                GetResults(moduleRows); 
            }
        });

        var GetResults = function(moduleRows) {
            var RightAnswer = 0;
            var WrongAnswer1 = 0;
            var query = connection.query("SELECT * FROM studentsanswers WHERE Question = '"+moduleRows.question+"' ",function(err,rows2)
            {
                    for(var ii = 0;ii < rows2.length;ii++){
                        if (rows2[ii].Answer == moduleRows.RightAnswer){
                            RightAnswer++;
                        }
                        else if (rows2[ii].Answer == moduleRows.WrongAnswer1){
                            WrongAnswer1++;
                        }
                    }
                var Data = {
                    question: moduleRows.question,
                    RightAnswer: moduleRows.RightAnswer,
                    WrongAnswer1: moduleRows.WrongAnswer1,
                    NumberOfRightAnswer: RightAnswer,
                    NumberOfWrongAnswer1 : WrongAnswer1
                };
                insertResults(Data);
                return;
            });
        }

        var insertResults = function(Data) {
            var query = connection.query("INSERT INTO statistics set ? ",Data, function(err, rows)
                {   
                    PrintResults();
                    return;
                });
        }

        var PrintResults = function() {
            var query = connection.query("SELECT * FROM statistics" ,function(err,rows)
            {
                res.render('StatisticsByModules',{page_title:"Questions - Node.js",data:rows});
                return;
            }); 
        }
    });

};
我得到的错误是: 错误:发送邮件后无法设置邮件头。
TypeError:req.next不是一个函数

在下面的代码中,您调用GetResultsmoduleRows几次,它调用PrintResults几次,在PrintResults方法中发送res.render几次,这是您无法对单个请求执行的。首先,您必须创建数据列表,然后使用查询的数据调用req.render一次

var query = connection.query('SELECT * FROM questions WHERE module_id = ?', [X], function (err, rows) {
    for (var i = 0; i < rows.length; i++) { // <== HERE
        moduleRows = rows[i];
        GetResults(moduleRows);
    }
});

你能给出这个模块使用的地方的代码片段吗?你添加了完整的代码了吗?你说你的getting req.next不是一个函数错误,但它甚至没有在代码中使用