Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nodejs express模块中处理所有事件之前发送响应_Javascript_Node.js_Express - Fatal编程技术网

Javascript 在nodejs express模块中处理所有事件之前发送响应

Javascript 在nodejs express模块中处理所有事件之前发送响应,javascript,node.js,express,Javascript,Node.js,Express,我在node js中遇到express模块问题。问题陈述是在所有事件完成之前发送响应 在下面的代码中,当客户端点击相应的URI时,我调用函数“commonValidations()”。在commonValidations()函数中,其他一些函数在内部调用。但响应是在所有验证完成之前发送的 我尝试了res.on('end',callbackfunction)然后这个语句出现了一些错误,然后我把res.end()函数放进去。但在所有事件完成之前仍会发送res 有人能帮助我在处理完所有事件后如何发送响

我在node js中遇到express模块问题。问题陈述是在所有事件完成之前发送响应

在下面的代码中,当客户端点击相应的URI时,我调用函数“commonValidations()”。在commonValidations()函数中,其他一些函数在内部调用。但响应是在所有验证完成之前发送的

我尝试了
res.on('end',callbackfunction)
然后这个语句出现了一些错误,然后我把
res.end()
函数放进去。但在所有事件完成之前仍会发送res

有人能帮助我在处理完所有事件后如何发送响应吗

-->app.js(我没有输入数据库连接字符串和连接池详细信息)

在stateAbbrValidation函数完成之前,将向客户端发送响应

-->common.js

var query = require(directoryName+'/utils/sql_queries.js');
var app = require(directoryName+'/app.js');

module.exports = {
        commonValidations:function(db){
            stateAbbrValidation(db);
        }
};

function stateAbbrValidation(db){
    console.log('Query is '+STATE_S01_1);

    if(gStateAbbr == null || gStateAbbr == 'undefined')
        gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
    else{
        db.query(STATE_S01_1.replace('<STATE>', gStateAbbr), function(err1, rows){
            if(err1){
                console.log(err1);
            }
            if(Object.keys(rows).length == 0){
                console.log('Result size '+Object.keys(rows).length);
                gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
            }
            else{
                if(gStateCodeValue != null || gStateCodeValue != 'undefined'){
                    var cdKeys = Object.keys(rows);
                    var stateCd = rows[cdKeys[0]].STATE_CODE;
                    if(stateCd != gStateCodeValue){
                        gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
                    }
                }
            }
        });
    }

    /*db.prepare(STATE_S01_1, function(err, stmt){
        if(err){
            console.log(err);
        }
        stmt.execute(['CA'], function(err, result, rows){
            console.log(err);
            console.log(result);
            result.closeSync();
            console.log(result);
            console.log(rows);
        });
    });*/
}
var query=require(directoryName+'/utils/sql_querys.js');
var-app=require(directoryName+'/app.js');
module.exports={
commonValidations:函数(db){
状态偏差(db);
}
};
函数状态默认值(db){
console.log('查询为'+STATE\u S01\u 1);
if(gStateAbbr==null | | gStateAbbr==‘未定义’)
gErrors.error.push({“errorCode”:“E062”,“errorDesc”:“无效状态代码”});
否则{
db.query(STATE_S01_1.replace(“”,gStateAbbr),function(err1,rows){
如果(错误1){
console.log(err1);
}
if(Object.keys(rows.length==0){
log('Result size'+Object.keys(rows.length));
gErrors.error.push({“errorCode”:“E062”,“errorDesc”:“无效状态代码”});
}
否则{
if(gStateCodeValue!=null | | gStateCodeValue!=“未定义”){
var cdKeys=Object.keys(行);
var stateCd=行[cdKeys[0]]。状态代码;
if(stateCd!=gStateCodeValue){
gErrors.error.push({“errorCode”:“E062”,“errorDesc”:“无效状态代码”});
}
}
}
});
}
/*数据库准备(状态为S01,功能为err,stmt){
如果(错误){
控制台日志(err);
}
stmt.execute(['CA'],函数(err,result,rows){
控制台日志(err);
控制台日志(结果);
result.closeSync();
控制台日志(结果);
console.log(行);
});
});*/
}
尝试使用。它有助于在处理所有事件后发送响应。 请参见以下摘自的示例:


注意:每个函数都应该有一个回调,最后所有回调的集合结果都作为数组发送。

为什么不共享相关代码?你遇到麻烦的那部分?谢谢Naitik。我尝试在异步模块中使用series函数,这次调用不会进入第二个任务。var asyncTasks=[];asyncTasks.push(function(){console.log('testing');common.commonValidations(db);});asyncTasks.push(function(){gErrors.teslaRequest=gReqBody;console.log('testing2');res.send(JSON.stringify(gErrors));});async.series(asyncTasks,函数(err,results){console.log('error is'+err);console.log(results);});
var query = require(directoryName+'/utils/sql_queries.js');
var app = require(directoryName+'/app.js');

module.exports = {
        commonValidations:function(db){
            stateAbbrValidation(db);
        }
};

function stateAbbrValidation(db){
    console.log('Query is '+STATE_S01_1);

    if(gStateAbbr == null || gStateAbbr == 'undefined')
        gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
    else{
        db.query(STATE_S01_1.replace('<STATE>', gStateAbbr), function(err1, rows){
            if(err1){
                console.log(err1);
            }
            if(Object.keys(rows).length == 0){
                console.log('Result size '+Object.keys(rows).length);
                gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
            }
            else{
                if(gStateCodeValue != null || gStateCodeValue != 'undefined'){
                    var cdKeys = Object.keys(rows);
                    var stateCd = rows[cdKeys[0]].STATE_CODE;
                    if(stateCd != gStateCodeValue){
                        gErrors.error.push({"errorCode":"E062", "errorDesc":"Invalid State code"});
                    }
                }
            }
        });
    }

    /*db.prepare(STATE_S01_1, function(err, stmt){
        if(err){
            console.log(err);
        }
        stmt.execute(['CA'], function(err, result, rows){
            console.log(err);
            console.log(result);
            result.closeSync();
            console.log(result);
            console.log(rows);
        });
    });*/
}
async.series([
    function(callback){
        // do some stuff ...
        callback(null, 'one');
    },
    function(callback){
        // do some more stuff ...
        callback(null, 'two');
    }
],
// optional callback
function(err, results){
    // results is now equal to ['one', 'two']
});


// an example using an object instead of an array
async.series({
    one: function(callback){
        setTimeout(function(){
            callback(null, 1);
        }, 200);
    },
    two: function(callback){
        setTimeout(function(){
            callback(null, 2);
        }, 100);
    }
},
function(err, results) {
    // results is now equal to: {one: 1, two: 2}
});