【发布时间】:2015-12-31 17:55:42
【问题描述】:
我在 node js 中遇到 express 模块的问题。问题陈述是在所有事件完成之前发送响应。
在下面的代码中,当客户端点击相应的 URI 时,我将调用函数“commonValidations()”。在 commonValidations() 函数内部,内部调用了一些其他函数。但响应是在所有验证完成之前发送的。
我尝试了res.on('end', callbackfunction),然后我在这个语句中遇到了一些错误,然后我输入了res.end() 函数。但是仍然在所有事件完成之前发送 res 。
有人可以帮助我在处理完所有事件后如何发送响应吗?
-->app.js(我没有放db连接字符串和连接池详情)
var express = require('express');
var bodyParser = require('body-parser');
var PropertiesReader = require('properties-reader');
var path = require('path');
var http = require("http");
var app = express();
var DB2Pool = require('ibm_db').Pool;
GLOBAL.gCNPool = new DB2Pool();
GLOBAL.gCNString;
GLOBAL.gErrors = {
"teslaRequest":{type : Object},
"error":[]
};
http.createServer(app).listen(3030);
GLOBAL.directoryName=path.resolve(__dirname);
var common = require(directoryName+'/validations/common.js');
app.post("/cfo/taxprofile/stateprofiles/validate", function(req, res){
gCNPool.open(gCNString, function(err, db){
common.commonValidations(db);
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(gErrors));
}
});
在 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);
});
});*/
}
【问题讨论】:
-
为什么不分享相关代码呢?您遇到问题的部分?
标签: javascript node.js express